List、Set 都是继承于 AbstractCollection 类的,它们的共同点都是只能存储一个对象。List 元素具有放入顺序,且元素可重复。而 Set 元素不具有放入顺序,且元素不可以重复。
Map 继承与 AbstractMap 类的,它不具有放入顺序,且是通过 key-value 形式存储的。
List 中常用类及特点
类名 | 特点 | 效率 |
---|---|---|
LinkedList | 基于链表实现 | 增删快,查找快 |
ArrayList | 线程不安全 | 效率高 |
Vector | 线程安全 | 效率低 |
Set中常用类及特点
类名 | 底层原理 | 特点 |
---|---|---|
HashSet | 数组+哈希(jdk8之前)数组+红黑树(jdk8之后) | 效率高 |
LinkedHashSet | 哈希表+链表 | 不能重复,有序 |
Map中常用类及特点
类名 | 特点 | 效率 |
---|---|---|
HashMap | 线程不安全、允许空键值 | 单线程效率高 |
HashTable | 线程安全 | 单线程效率低 |
LinkedHashMap | 保存插入顺序 | 速度慢 |