集合
数据结构分为:
逻辑结构:线性表(数组、链表)、图、树、栈、队列
物理结构:顺序结构、链式结构
以线性表为例,其顺序结构表现就是数组,而链式结构表现就是链表。
顺序结构特点:
寻址快,通过下标
但是删除、增加元素效率低
链式结构的特点:
删除、增加元素快
寻址慢
数组长度是固定的,为了保存不定量的数据(Collection),以及具有关系映射的数据(Map)。
因为数组拥有下面的缺点,无法满足所有的场景,故引出集合:
数组元素长度固定
添加、删除元素效率很低
数组只能存放同一类型的数据
数组不能完成不可重复元素的功能
Java 集合的继承结构
在Java中,集合API又分为两大体系: Collection
和 Map
Collection
Queue
全是一些与队列相关的方法:
操作 | 抛出异常 | 返回特殊值 |
---|---|---|
插入 |
|
|
删除 |
|
|
检查 |
|
|
List
List 主要提供了根据索引操作、查看元素的接口方法。
Set
Set没有特有的方法。不同于List,他是无序(无序不是随机,是按照一种特殊的顺序)存储的。
Map
Map(也称作字典,关联数组)通常用于具有映射关系的数据,所以在Map中存放着两组值,一组存放key,一组存放value,key不允许重复,key和value是一对一的关系。
Set则是由Map包装实现的,Set本质上是一个value相同的Map的key集合。
Map的实现上与Set惊人的相似。
Map | Set |
---|---|
HashMap | HashSet |
LinkedHashMap | LinkedHashSet |
SortedMap | SortedSet |
TreeMap | TreeSet |
EnumMap | EnumSet |
性能比较:
HashTable 与 HashMap 类似,但是HashTable 线程安全,古老,所以比较慢
TreeMap 比 HashTable与HashMap慢,尤其插入删除时,需要维护顺序(底层使用红黑树管理key-value)
LinkedHashMap 相比于 HashMap稍慢一点,因为需要链表维护添加顺序
EnumMap最优,但是功能有限
推荐HashMap。
最后更新于