设计
- 高性能,基本集合的实现必须是高效的
- 允许不同类型的集合,并且都能以类似的方式工作,具有高度的操作性
- 扩展和适应性应该是简单的
实现
Collection
Collection 接口 Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。Collection 接口存储一组不唯一,无序的对象。
List
List接口是一个有序的collection,使用此接口可以精确的控制数据存储的位置,它通过索引来访问里面存储的元素,并且允许存入值重复
ArrayList
- 实现了List接口,实现了可变大小的数组
- 随机访问数据性能好
- 非同步
- 可根据增加的数据,来扩展长度,每次扩展都是当前长度的50%
-
LinkedList
实现了List接口,允许有null值元素,以链表数据结构创建
- 该类无同步方法,需要自己实现方法同步,可以在创建List的时候构造一个同步的List,
List list=Collections.synchronizedList(newLinkedList(...));
- 查找效率比较低
set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。
HashSet
HashMap
一个散列表,存储内容以键值对方式映射,实现了Map接口,根据键的HashCode值来存储数据,具有很快的存储舒服,最多允许一天记录为null,不支持线程同步
LinkedHashMap
TreeMap
ConcurrentHashMap
差异化
List和Map的区别
- 相同点
- 都是Java常用·的容器
不同点
相同点
- 他们都继承了List接口
- 不同点