Set接口
set不允许包含重复的值,并且set添加的元素无法记住添加时的顺序。
HashSet集合:实现了set接口。add()方法底层依赖与HashMap.
注:hashSet集合不是线程安全的,集合可以是null,
当向hashSet集合中添加元素时,hashSet(0会调用对象的hashCode()方法来得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 HashSet 中的存储位置。如果两个元素的 equals() 方法返回 true,但它们的 hashCode() 返回值不相等,hashSet 将会把它们存储在不同的位置,但依然可以添加成功。
TreeSet 是 SortedSet 接口的实现类,TreeSet 可以确保集合元素处于排序状态。
排序方法:自然排序(默认)、定制排序。
自然排序:如果要添加一个对象至TreeSet。
1.该对象的类实现Comparable接口,实现comparaTo(Object o)方法,对象通过该方法的返回值来比较大小。
定制排序:在创建TreeSet集合对象时,实现Comparator接口,由它来对集合元素进行排序。
步骤:
1.创建一个比较器,实现Comparator接口
2.复写compare方法
3.创建treeSet时提供一个Comparator对象
这样在向1集合中添加数据时,比较器会自动比较,并还可以根据compare方法中returnf返回值进行排序。