Java数据结构-集合类

List集合(ArrayList,Vector,LinkedList使用场景)和Set集合

参考链接:

java各种集合类区别  https://blog.csdn.net/qq_30711091/article/details/88847892
Java 集合系列之四:Queue基本操作  https://www.cnblogs.com/haimishasha/p/10808906.html
关于LinkedList的使用场景及优化 https://tieba.baidu.com/p/2777462369?red_tag=2828544283
自定义jdbc连接池 https://www.cnblogs.com/ylfeiu/p/3621886.html

 

基础集合接口分为:Collection和Map

Collection集合有三个集合扩展:List、Set、Queue

这个Collection集合接口常用的类

Set, List, Map, SortedSet, SortedMap, HashSet, TreeSet, ArrayList, LinkedList, Vector, Collections, Arrays, AbstractCollection


List: 元素可重复,有序(存入顺序1,2,3 遍历顺序1,2,3)

常用的类:
ArrayList:集合元素使用数组结构array,
查询速度快,增删改查慢,数组可以下标访问任意元素,因此它的随机访问速度快

LinkedList: 底层使用链表结构,增删速度快,查询速度慢

Vector: 向量,底层数组结构array,与ArrayList相同,查询速度快,增删改慢。
访问方法是加了
synchronized同步关键字,是线程安全的

Vector和ArrayList区别。

默认时。数组长度超出最大容量时,
Vector的增长率是100%,(newCapacity = oldCapacity + oldCapacity)
而ArrayList增长率是50%(newCapacity = oldCapacity + (oldCapacity >> 1)) 右移移位相当于除以2

 

Set: 元素不可重复,无序(存入顺序和遍历出来的数据顺序不一致)

常用的类:
HashSet: 允许有null值,拥有Set的特性,不是线程安全的

 

Queue:不允许插入null元素(不具体展开)

参考链接:https://www.cnblogs.com/haimishasha/p/10808906.html
常用的Queue实现类是
LinkedList,ArrayBlickingQueue, LinkedBlockingQueue,PriorityQueue, PriorityBlockingQueue

 

网上很多关于ArrayList和LinkedList使用场景文章

ArrayList会经常用到,但是LinkedList具体的使用场景比较少。

这里给出一个LinkedList的具体使用场景:

使用LinkedList来维护连接池
连接池实际是用来存放链接对象的一个集合,当一个请求需要建立连接时
从连接池中拿出任意一个连接对象并返回给请求放,
请求放完成操作后将连接对象返回,并添加到连接池集合中
连接池需要频繁的添加移除连接对象,而对于具体给请求放哪一个连接对象并不在乎,
与LinkedList增删块,查询慢特性非常契合。

 

 

Map集合类

Map这个集合类可以看成key集合和value集合类的组合,即双列集合
也可以看成特殊的集合,元素是:key-value键值对组成的元素对象
key的集合类是实现Set接口

所以Map的key值具有唯一性(互异性),无序

HashMap:非线程安全的

HashTable: 线程安全的,操作方法上加了synchronized关键字 (不允许使用null作为key和value,否则会引发异常,而HashMap可以)

因为Map的key是Set集合,具有唯一性,和无序性。 遍历元素的顺序是不一致了

 

 

posted @ 2021-03-03 18:37  海绵般汲取  阅读(84)  评论(0编辑  收藏  举报