2020-10-18list、set操作 Comparator类 HashSet类 Collection工具类

简述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 自然排序


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容