Set
§ HashSet
§ LinkedHashSet
§ TreeSet
一:
Set
1. Set 集合不允许包含相同的元素
2. Set 是 Collection 的子接口。
3. Set 中不允许存放相同的元素,判定相同的元素标准是,两个对象各调用 equals () 方法,返回 true
二:
HashSet:
①、不能保证元素的排列顺序。
②、集合元素可以是 null。
③、对于HashSet :如果两个对象通过 equals () 方法返回 true ,这两个对象的hashCode 值也应该相同。
三:
LinkedHashSet:
①、LinkedHashSet 是HashSet 的子类。
②、 使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
③、LinkedHashSet 不允许集合元素重复。
四:
TreeSet
1. TreeSet可以确保集合元素处于排序状态。
2. TreeSet 支持两种排序方法:自然排序和定制排序。默认情况下,TreeSet 采用自然排序。
自然排序:
1. TreeSet会调用集合元素的 compareTo(Object obj) 方法来比较元素之间的大小关系,然后将集合元素按升序排列
2. 如果试图把一个对象添加到 TreeSet 时,则该对象的类必须实现Comparable 接口。
3. 实现Comparable 的类必须实compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj) 方法的返回值来比较大小
4. 因为只有相同类的两个实例才会比较大小,所以向 TreeSet 中添加的应该是同一个类的对象,当需要把一个对象放入 TreeSet 中,重写该对象对应的 equals() 方法时,应保证该方法与compareTo(Object obj) 方法有一致的结果:如果两个对象通过 equals() 方法比较返回 true,则通过 compareTo(Object obj) 方法比较应返回 0
定制排序:
1. 创建 TreeSet 对象时,传入 Comrparator 接口的实现类。
2. 要求:Comparator 接口的 compare 方法的返回值和两个元素的 equals ()方法具有一致的返回值。