java容器集合
java 集合分为 collection 和 map 两大类
collection 是 java 集合框架的顶层接口,它是对容器类进行增、删、改、查的定义,同时继承了 iterable 接口,具有对集合或容器中的元素进行遍历的能力
collection 继承了 iterable 接口,具有了快速遍历的能力,iterable 接口中定义了获取集合迭代器的方法 iterator(),该方法返回一个容器的迭代器,迭代器接口中定义 2 个方法用于结合 while 或 for 迭代
根据存储数据结构把 collection 细分为两种子集合:
list:元素有序,可重复(不唯一)的集合,包含以下三个实现类:
arraylist 是 list 接口的可变数组的实现类,可以自动拓容
vector(已过时)
linkedlist 是 list 的实现类,底层数据结构是链表
set:元素无序,唯一的集合,包含以下两个实现类:
hashset 是 set 接口的实现类,底层数据结构是 hash 表/散列表,查找效率高、添加效率高、删除效率高
linkedhashset 底层数据结构是 hash 表+链表,通过内部的链表维持添加次序,继承于 hashset
treeset 是 set 接口的实现类,底层数据结构是二叉树,排序后查询速度比 hashset 快
map 表示映射关系的集合,里面存储的元素是 key-value(键值对),键值对就表示映射关系,里面 key 唯一
包含有以下三个子集合:
hashmap 是 map 的实现类,其中 key 是按照 hashset 存储的
linkedhashmap 是 map 的实现类,其中 key 是按照 linkedhashset 存储的
treemap 是 map 的实现类,其中 key 是按照 treeset 存储的
总结:
名称 |
存储结构 |
顺序 |
唯一性 |
查询效率 |
添加/删除效率 |
arraylist |
顺序表 |
有序(添加) |
不唯一 |
高 |
低 |
linkedlist |
链表 |
有序(添加) |
不唯一 |
低 |
最高 |
hashset |
hash表 |
无序 |
唯一 |
最高 |
最高 |
hashmap |
hash表 |
key无序 |
key唯一 |
最高 |
最高 |
linkedhashset |
hash+链 |
有序(添加) |
唯一 |
最高 |
最高 |
linkedhashmap |
hash+链 |
key有序( 添加) |
key唯一 |
最高 |
最高 |
treeset |
二叉树 |
有序(升序) |
唯一 |
中等 |
中等 |
treemap |
二叉树 |
有序(升序) |
key唯一 |
中等 |
中等 |
上一篇: 递归手写深拷贝
下一篇: 详解Go module的介绍及使用