==比较的是地址,Object中的equals使用的就是==,通常我们要重写equals
Set
Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的 Set 实现类依赖添加的对象的 equals() 方法来检查等同性。
Hashset
hashcode用于使用哈希表存储对象的集合
向这种集合时加入对象首先计算对象的hashcode(使用hashcode方法),每个hashcode对应一个存储空间(每个存储空间可以存放多个元素),加入元素时,会沿着存储空间的第一个元素开始比较(使用equals方法),直到存储空间的最后一个元素,如果没有相同的元素,就加入,否则返回false。
equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
Treeset
TreeSet则是对我们的Set中的元素进行有序存放,数据结构式红黑树,当要从集合中以有序的方式抽取元素时,实现就会有用处。为了能顺利进行,添加到 TreeSet 的元素必须是可排序的。TreeSet 实例使用它的 compareTo(或 compare)方法对所有元素进行比较,所以加入TreeSet 的对象的类必须实现 compareTo(或 compare)或者为TreeSet 指定比较器Comparator
|