Java集合框架总结
集合框架架构图
什么是集合框架?
集合框架的特点?
集合框架 | 特点 | 备注 |
List | 保持插入顺序,元素可以重复 | |
Set | 元素不可重复 | |
Map | 键值对 |
接口 |
实现类 |
底层实现 | 特点 | 适用场景 | 备注 |
List |
LinkedList |
链表 | 有序;允许重复 | 增删快;查找修改慢;线程不安全 |
不占内存;实现了List接口和Deque接口 既可以当队列也可以当栈; |
Vector | 链表 | 线程同步,线程安全,重量级 | 增删快,查找修改慢 | Vector是线程安全的ArrayList | |
ArrayList | 数组 | 有序;允许重复;轻量级 | 查询快,增删慢,线程不安全 | 自动扩容;扩容未使用的空间造成浪费 | |
Set | HashSet | 哈希表 | 无序;不允许重复; | ||
LinkedHashSet | 双重链接列表 | 有序;不重复 | |||
TreeSet | 红黑树 | 二叉树排序 | |||
Map | HashMap | 哈希表 | key的实现是HashSet;value对应着放;线程不安全 | key的实现是HashSet;value对应着放; | 需要额外的同步机制,可通过Collections的一个静态方法得到解决:Map Collections.synchronizedMap(Map m),当然与可以自己在使用地方加锁 |
TreeMap | 红黑树 | 对key排好序的Map; key 就是TreeSet, value对应每个key; | 二叉树排序 | ||
HashTable | 哈希表 | 线程安全,不允许null的键或值 | |||
LinkedHashMap | 链表+哈希表 | 双重链表结构;有序;key的实现是HashSet;value对应着放; | 具有可预知的迭代顺序 | ||
Properties | key和value都是String类型 | 读配置文件 | |||