Collection集合框架体系图
方法 | 描述 |
---|---|
add(E e) | 向集合添加单个数据,添加成功返回true,否则返回false |
addAll(Collection<? extennds E> c) | 向集合添加批量数据,添加成功返回true,否则返回false |
remove(Object o) | 从集合中删除单个数据,成功返回true,否则false |
removeAll(Collection<?>) | 删除指定集合中也有的数据,成功返回true,否则false |
retainAll(Collection<?>) | 保留指定集合中也有的数据,成功保留一个返回true |
removeIf(Predicate<? super E>) | 按指定规则删除集合中的数据,成功删除一个返回true |
clear() | 清空集合 |
Collection常用方法分类
List方法分类
下面介绍万物之源ArrayList
- 它是基于数组的集合
- 特点是:
- 查询快(有索引,可直接定位查找目标的位置)
- 有序(指的是存入的顺序和取出的顺序一致)
- 可用存null
- 缺点是:
- 增删慢
- 常用方法
LinkedList
-
基于链表实现的
-
特点:
- 有序
- 可重复
- 可为null
-
优点
- 增删快
-
缺点
- 查询慢(每次查询都要从头部或尾部依次找)
ArrayList和linkedList的不同之处
HashMap的介绍
-
它是以键值对存储的,一个键对应一个值
-
基于数组和链表+红黑树实现的(jdk1.8之前都是链表+数组)
-
无序
-
key可为null
-
key不可以以重复(重复了旧值会覆盖新值)
-
哈希冲突
-
扩容
HashMap的树化
- 树化是当链表长度大于8且数组容量大于等于64时,将链表转换为红黑树的过程
- 红黑树:是自平衡的二叉树
- 转成红黑树的目的是为了提高查询速度,因为链表一旦长了以后查询速度会变得很慢
HashMap的链化
- 当红黑树中的节点小于等于6时
- 红黑树将转换成链表,这个过程称为链化,此时的节点数很少,链表与红黑树的查询速度不相上下,而且在新增元素的时候,链表不用计算节点的位置,直接插在尾部,但红黑树还要计算节点的位置 ,因此它们两个相互转化,形成了很好的互补