一, List
1,ArrayList
继承 AbstractList 类, 实现 List, RandomAccess, Cloneable, java.io.Serializable 接口, 采用 Object[] 数组方式存储, 查询快, 增删慢, 实现了可变大小的数组, 原理是通过 Arrays.copyOf() 再 new 一个数组
2,Vector
继承 AbstractList 类, 实现 List, RandomAccess, Cloneable, java.io.Serializable 接口, 采用 Object[] 数组方式存储, 查询快, 增删慢, 方法被 synchronized 修饰, 所以线程安全
3,LinkList
继承 AbstractSequentialList 类 (继承 AbstractList), 实现 List, Deque, Cloneable, java.io.Serializable 接口, 采用链表方式存储, 增删快, 查询慢
二, Map
1,HashMap
HashMap 继承 AbstractMap 类, 并实现 Map, Cloneable, Serializable 接口
key 通过 hash 后和 value 存储到哈希表中, 没有使用 synchronized, 所以线程不安全, 但效率比较快, 而且还能支持键值为 null
2,Hashtable
Hashtable 继承 Dictionary 类, 并实现 Map, Cloneable, Serializable 接口
Hashtable 方法都被 synchronized 修饰, 所以是线程安全的, 但效率没 HashMap 快, 不能支持键值为 null
3,LinkedHashMap
LinkedHashMap 继承 HashMap 类, 并实现 Map 接口, 键值对既在哈希表中, 又在双向链表中
LinkedHashMap 内部有个双向链表, 同时支持插入顺序和访问顺序两种
插入顺序: 先进先出; 访问顺序: 所谓访问指的是 get/put 操作, 对一个键执行 get/put 操作后, 其对应的键值对会移动到链表末尾, 所以最末尾的是最近访问的, 最开始的是最久没有被访问的.
来源: http://www.bubuko.com/infodetail-3287070.html