集合:对数据结构和算法进行了封装
-
一个装东西的容器
- 集合的根;Collection
- Collection的两个子接口:List(列表)Set(集)
- Map(映射):主要放的Key-Value的数据
- List集合的特点:
-
1.List集合中的元素是有顺序的
-
2.List集合这种弄允许存放重复元素
-
3.List集合中允许存放null元素
-
4.List集合中可以通过索引访问元素
- ArrayList底层给予数组接口,查询快,操作数据慢。
- LinkedList低层级与双向链表结构,操作数据相对快,查询慢
- Vector和ArrayList底层一样,但是区别在于Vector是线程安全的,数据的准确性高,
*但整体性能较差 - Set(集):
-
HashSet底层:数组结构加双向链表
-
TreeSet
TreeSet同样是Ste接口的实现类
- 特点:
-
1.集合中间的元素在存放时它是有序的,但是要做到有序,需要存放的元素都需要实现一个接口
-
Comparable接口,并重写comparTo()
-
2.由于元素需要排序,元素不能放null
-
3.底层原理:红黑二叉树(在二叉树中,比较元素时,小的在左边,大的在右边。如果是相等的,直接覆盖它的值。)
-
去重原理:利用TreeMap的key的去重原理,来完成集合去重
-
TreMap的去重原理:数据和二叉树中的元素进行比较来实现,如果数据比二叉树的节点数据小,那么数据就继续和下一
-
个左边的子节点进行比较,反之和右边的子节点进行比较,如果相同就直接覆盖值,然后退出,不相同就继续按照上述
-
原理进行比较,一直比到自戒掉为叶子节点为止。
HashSet的特点:
-
1.去重
-
2.遍历没有顺序可言
-
3.可以放null元素
- HashSet 去重的原理:它是用的HashMap中的key来存储数据
-
通过HashMap的去重原理,完成数据的去重
- HashMap的key的去重原理
- 1,获取key的hash值,然后从HashMap的Hash表中取查询是否存放相同的hash值
- 1.1:如果hash之不存在,那么直接在Hash表中添加新的数据
- 1.2:如果hash值已经存在,那么就继续通过equals()比较key是否与已经存在的key的
-
value相同,如果不同那么财通单项链表追加数据,如果相同则忽略key的覆盖
*/