一、Java集合框架
1、List 集合特点
List 集合是有序集合,存储有序可重复(有序)数据,主要实现由一下三种:
-
ArrayList 类
- 底层是数组结构;
- 线程是不安全,效率高,对于频繁随机遍历的操作适合使用此类;
- 可以存储 null 值;
-
LinkedList 类
- 底层是双链表结构;
- 线程是不安全,对于频繁的插入、删除操作,使用此类效率比Arraylist 高;
- 可以存储 null 值;
-
Vector 类
- 底层使用Object[] elementData储存;
- 作为list古老实现类;线程安全,效率低;
2、Set 集合特点
Set 集合无序集合,存储无序不可重复(唯一)数据,主要实现由一下三种:
-
HashSet 类
- 底层通过散列实现;
- 线程是不安全,效率高;
- 可以存储 null 值;
-
LinkedHashSet 类
-
可以记住元素插入次序;
-
LinkedHashSet 是 HashSet 的子类,对于频繁的遍历操作,LinkedHashSet效率高于HashSet。
-
-
TreeSet 类
- 可按照添加对象的指定属性进行排序;
- 不可储存null值;
3、CollectionS 集合工具类
Collections 工具类的常用方法:
方法名 | 描述 |
---|---|
void copy(List dest,List src) | 将 src 中的类容复制到 dest 中 |
boolean addAll(Collection<? super T> c, T… elements) | 向已知集合中添加元素 |
synchronizedXXX(XXX) | 将List 、Set 、Map 集合变成线程安全 |
void reverse(List<?> list) | 将List 集合中存储元素顺序倒置 |
void sort(List list) | 将List 集合中的元素进行升序排序 |
4、Map 集合特点
Map 集合是以 k/v 键值对存储数据,主要实现由一下四种:
- HashMap 类
- 线程不安全,效率高;
- key 可以为 null,单只能存储一个 null。
- LinkedHashMap 类
- 保证在遍历Map元素时,可以按照添加顺序实现遍历。
- 在原有的HashMap底层结构基础上添加了一对指针,指向前一个和后一个元素,对应频繁的遍历操作,执行效率高于HashMap
- TreeMap 类
- 添加元素是会将键进行升序排序;
- Hashtable类
- 线程安全,效率低;
- 存储储存的key不能为 null;
二、java库中的具体集合
集合类型 | 描述 |
---|---|
ArrayList | 可以动态增长和缩短的一个索引序列,查询快,增删慢 |
LinkedList | 可以在任何位置高效插入和删除的一个有序序列,增删快,查询慢 |
ArrayDeque | 实现为循环数组的一个双端队列 |
HashSet | 没有重复元素的一个无序集合 |
TreeSet | 一个有序集,集合内部会自动对所以元素安装升序排列 |
EnumSet | 一个包含枚举类型值的集 |
LinkedHashSet | 一个可以记住元素插入次序的集 |
PriorityQueue | 允许高效删除最小元素的一个集合 |
HashMap | 存储 键/值 关联的一个数据结构 |
TreeMap | 键有序的一个映射 |
EnumMap | 键属于枚举类型的一个映射 |
LinkedHashMap | 可以记住键/值 添加次序的一个映射 |
WeakHashMap | 值不会再别处使用时就可以被垃圾回收的一个映射 |
IdentityHashMap | 用 == 而不是用 equals 比较键的一个映射 |