Java集合
2019-11-05 10:06:46 0 举报
AI智能生成
JDK1.8集合框架图
作者其他创作
大纲/内容
结构图
Iterable
Collection接口
List接口
ArrayList
ArrayList是线性表(动态数组);线程不安全;基于Object数组实现,有序
默认容量大小是10;扩容后是(15)原来的1.5倍(扩容是创建一个新的数组,在复制)
查询快
get() 直接读取第几个下标,复杂度 O(1)
增加删除慢
add(E) 添加元素,直接在后面添加,复杂度O(1)
add(index, E) 添加元素,在第几个元素后面插入,后面的元素需要向后移动,复杂度O(n)
remove()删除元素,后面的元素需要逐个移动,复杂度O(n)
遍历用for 循环,效率高,用迭代器iterator 遍历会非常慢,因为做了很多安全检查但支持边遍历边remove
vector
Vector是线程安全的;涉及到元素更改的函数之前都加了关键字synchronized
Vector是矢量队列;是JDK1.0版本添加的类,他继承于AbstractList,实现了接口库List,RandomAccess,和Cloneable。
Vector与ArrayList的实现大同小异,都是使用数组作为底层的存储器,区别主要是线程安全
Stack
LinkedList
LinkedList 是基于链表实现的;线程不安全
添加删除快
add(E) 添加到末尾,复杂度O(1)
add(index, E) 添加第几个元素后,需要先查找到第几个元素,直接指针指向操作,复杂度O(n)
remove()删除元素,直接指针指向操作,复杂度O(1)
查询慢
get() 获取第几个元素,依次遍历,复杂度O(n)
Queue接口
Deque接口
PrioityQueue
Set接口
HashSet
LinkHashSet
元素唯一,不可重复
有顺序 (在HashSet中,我们无法对其实例的元素进行排序,而当我们需要对元素插入的顺序进行排序时,LinkedHashSet是一个可用的选择)
元素唯一,不可重复
无顺序(指的跟存入的顺序不同,通过hash散列有自己的固定顺序)
TreeSet
不允许为空
元素唯一,不可重复
有序
线程不安全
Map接口
IdentityHashMap
HashMap
LinkedHashMap
Hashtable
SortedMap
TreeMap
0 条评论
下一页