1.Set集合
特点: 无序,无索引,不可存储重复元素
2.Set集合的子类
|-HashSet
|-TreeSet
3.通过使用HashSet存储自定义对象, 发现该对象必须要重写equals方法和hashCode方法才能保证集合中的元素唯一!
4.总结规律:
两个不相同的对象,有可能hashCode相同
equals方法返回true,两个对象的hashCode必须是相同的.
5.Set集合中的无序是指存取的顺序不一致!
HashSet是没有排序功能,只是有可能有机率出现一些有顺序的内容而已!
6.TreeSet集合:
1.可以保证元素的唯一,还可以对元素进行排序!
2.当存储自定义对象的时候,如果没有实现Comparable接口的时候,在存储对象的时候就会报错: ClassCastException
3.使用TreeSet存储自定义对象就需要该对象实现Comparable接口,并重写compareTo(), 该方法的返回值是int类型
4.当compareTo方法返回0时,代表两个对象是相同,不会存到集合中.
当compareTo方法返回负数时,集合是倒序存储
当compareTo方法返回正数时,集合是怎么存怎么取
5.TreeSet的底层是二叉树结构
二叉树 = 红黑树
6.调用compareTo方法的是将要存到集合中的元素.compareTo方法中参数是集合中的元素.
7.比较器排序:
定义一个类实现Comparator接口,重写compare(O1,O2)方法
8.排序方式:
1.自然排序: 让元素实现Comparable接口,重写compareTo方法.
2.比较器排序: 给TreeSet传入一个比较器对象
9.当TreeSet集合中的元素有实现Comparable接口,但是又传入了比较器对象,这个时候优先使用比较器排序.
10.两种排序方式的区别:
1.如果是自然排序,好处是比较节省代码,弊端是不灵活
2.如果是比较器排序,好处是比较灵活,弊端是代码量多
|
|