集合类型
(1)Set (2)List (3)Map
接口
Collection 和 Map
单列集合
概述:在内存中以单列的形式存储
Collection<<interface>>
Set接口
特点:无序,无索引,无重复值,有且只有一个null,线程不安全
数据结构:散列表(散列存储)
Set的实现类
- HashSet
数据结构是散列表,即用哈希表来实现的
特点:无序,无索引,无重复值,有且只有一个null值,线程不安全
- TreeSet
数据结构是红黑树,底层是TreeMap
特点:无序,无重复值,默认升序排序,无null值
List接口
LinkedList
基于双链表实现的数据结构,增删快,查询慢
ArrayList
基于数组实现的,增删慢,查询快
双列集合
概述
- 在内存中以双列的形式存储
特点
- 双列的形式存储数据key-value
- 元素是成对出现的,通过key访问value值
- key不能有重复值,并且key有且至于一个null值,无序,value可以有重复值且可以有多个null值
Map<<interface>>
三种Map实现
HashMap:
- HashMap的数据结构为哈希表,允许使用null键和null值,但是不保证映射的顺序
- 适用于在Map中插入、删除和定位元素
- 特点:键唯一且无序,值有序可重复,线程不安全
扩容机制:默认初始容量为16,默认加载因子为0.75
当阈值达到16*0.75=12是开始进行扩容
公式=当前容量*2
HashTable:
- HashTable实现了一个哈希表,该哈希表将键映射到对应的值。任何非null对象都可以作为HashTable的键或者值,因此HashTable不允许设置null键和null值。
- 线程安全
- 在单线程环境下,性能低,适用于完全的线程安全
扩容机制:默认容量为11,加载因子为0.75
当阈值达到11*0.75是开始进行扩容
公式=当前容量*2+1
TreeMap:TreeMap基于红黑树实现的。TreeMap没有调优选项,因此该树一直处于平衡状态。TreeMap不允许null键,但允许null值