集合与实现类
Vector集合:
- 线程安全,但是效率低
- 底层也是数组
- 初始容量是10
- Api与ArrayList相同,ArrayList线程不安全,Vector线程安全
ArrayList、LinkedList、Vector的区别:
- ArrayList底层是数组结构,需要初始化,LinkedList底层是双向链表结构,不需要初始化
- ArrayList需要扩容,大小是原来的1.5倍,LinkedList不需要扩容
- ArrayList 查找检索效率高,添加删除效率低,LinkedList查找检索效率低,添加删除效率高
- ArrayList 线程不安全,但是效率高,Vector线程安全,但是效率低
- ArrayList 每次扩容大小是1.5倍,Vector是2倍
HashSet初始容量大小是16,负载因为是0.75,扩容大小为原来的2倍
LinkedHashSet :元素有序,通过新添加的链表来确定元素的顺序。继承了父类 HashSet的api与特点
TreeSet是Set接口的一个实现类,底层是红黑树。实现了SortedSet接口,有序的,存储元素类型必须实现Comparable 接口,充血compareTo方法
Map集合:
- 是一个双列集合,与Collection集合是并列关系
- Map集合中的key、value是映射关系
- Key、value都可以存储null值
- Key值不能重复
HashMap:
- 初始容量16,负载因子是0.75
- 元素不能保证是有序的
LinkedHashMap:
- 是HashMap的子类
- 底层是哈希表+链表结构,元素有序
- 可以存储null值
- 需要初始化、需要动态扩容
TreeMap
- 是map的实现类,同时实现了SortedMap接口,内部带有排序的特性
- 底层是红黑树
- 不需要初始化,也不需要扩容
- 不能存储null键与null值
HashTable集合类:
- 是Map集合的实现类
- 不能存储null值
- 底层是哈希表
- 需要容器初始化,需要动态扩容,初始容量是11,负载因为0.75
- 线程安全
- 但是不建议使用,建议使用HashMap