List、Map和Set
1、Map
(1) HashMap
HashMap基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null
键;无序既插入的顺序的取出的顺序不一致。
(2) LinkedHashMap
LinkedHashMap是map结构也是链表结构,有序的既插入顺序和取出一致。
(3) HashTable
线程安全,低效,不支持 null 值和 null 键;
2、Set
(1) HashSet
HashSet底层是由 Hash Map 实现,不允许集合中有重复的值。
(2) LinkedHashSet
LinkedHashSet继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap。LinkedHashSet中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。
3、List
List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,例如通过list.get(i)方法来获取集合中的元素;list本身就是有序的,既插入顺序和取出顺序一致。
(1) ArrayList
查找快,增删慢。因为底层是数组。
(2) LinkedList
基于链表实现,链表内存是散列的,增删快,查找慢;可以用作栈和队列。
(3) Vector
基于数组实现,线程安全,效率低,增删慢,查找慢;