简述list接口的特点
元素存取有序集合
带有索引的集合
可以有重复的元素 可以通过equals来比较是否有重复的元素
hashSet去重元素的原理
调用被添加元素hashcode 相同用equals进行比较
为啥子要重写? 因为HashSet也好、HashMap也罢、 底层的数据结构都是 哈希表(数组+链表),重写hashcode方法是为了确定元素要存在数组的哪个位置,重写equals方法,是为了比较元素内容是否相同,相同则不存储,不相同则存储,这便是HashSet,HashMap键的去重原理(不重写equals方法,默认比较的是地址值。如果两个对象地址值相同,那么这两个对象一定是同一个对象。通俗的讲:我new了两个String对象,一个是“zhangliya”,另一个是“zhangliya”,如果我们重写了equals方法,返回的是true,如果我们没有重写equals方法,返回的是false)
不同直接存储
常见的 数据结构
堆栈 队列 数组 链表
数组 Array 查询慢 增删快 通过索引 快速查找元素的指定位置
链表
比较Comparator Comparable
* 1. 实现Comparable 接口 , 重写 compareTo 方法 , 在compareTo 方法中给出该类对象比较大小的规则。
* 2. 实现Comparator接口的匿名内部类,重写compare方法, 在compare方法中给出该类对象比较大小的规则。
*
* Arrays.sort(Object[] objects).如果使用这个方法来比较大小的话,我们自定义的类必须要实现Comparable接口,重写compareTo方法。
* Arrays.sort(Object[] objects,Comparator c),如果使用这个方法比较大小的话,我们自定义的类不需要实现Comparable接口,重写compareTo()方法。
* 而是在第二个参数处,写一个Comparator接口的匿名内部类,重写compare方法,在方法中定义比较规则。
*
* Collections.sort(List[] list):我们自定义的类必须要实现Comparable接口,重写compareTo方法。
* Collections.sort(List[] list,Comparator c):我们自定义的类不需要实现Comparable接口,重写compareTo()方法。
* 而是在第二个参数处,写一个Comparator接口的匿名内部类,重写compare方法,在方法中定义比较规则。
应该用Comparator比较对象会好一点 这样 的实体类不用实现comparable接口。不用重写comparato方法。实体类看起来更简洁一点
Comparable:
Student类
Comparator:
LinkedList方法的使用
基本方法:add set get remove clear size
特有方法:addFirst addLast getFirst getLast removeFirst removeLast push pop clear(可以根据英文翻译来判断含义)
hashSet存储自定义类型
person类重写hashCode方法 equals方法 相同不存储 不同则存储
List元素替换
主要方法 get set
Collections工具类的使用
具体用到的 是Collections.sort 自然排序