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集合,具有唯一性,和无序性。 遍历元素的顺序是不一致了
出处:https://www.cnblogs.com/gne-hwz/
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任