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