java集合类结构梳理及用法简析
来源:互联网 发布:淘宝换货要确认收货吗 编辑:程序博客网 时间:2024/05/22 08:26
PS:以下内容基于 JDK7
List 结构图:
Set 结构图:
Queue 结构图:
Map 结构图:
用法简析:
Java的集合分为了四类:List Set Queue Map,每类都有不同的实现,有基于数组实现的,有基于链表实现的,有基于xx树实现的,不同的实现虽在功能上可以相互替代但都有各自的应用场景,如基于数组的实现擅长快速遍历,基于链表的实现擅长随机写,基于树的实现可排序等等,JDK1.5及以后还添加了很多实用的功能,如ConcurrentMap、BlockingQueue、BlockingDeque、CopyOnWriteArrayList、CopyOnWriteArraySet等等,另外,Collections工具类也提供了很多方便的API,如 synchronizedCollection、binarySearch、checkedCollection、copy、indexOfSubList、reverse、singletonList等等,这给我们提供了非常多的选择,在实际开发中一定要根据实际的情况仔细分析选择合适的数据结构可以大大方便开发过程以及大幅度提高系统性能。
在选择集合类时候可以参考:
多线程下使用,需要保证线程安全,读操作远大与写操作,例如缓存系统,使用CopyOnWriteArray...也许会是不错的选择,此外Concurrent...也是非常好的选择,如果在多线程间还需要协作通信等,那么阻塞队列BlockingQueue、BlockingDeque(双端队列)会是最合适的选择,如果这还不够,可以使用带优先级的PriorityBlockingQueue,更秒的地方我们还可以使用 DelayQueue (延迟队列),如果你的创造力够强的话,用DelayQueue来实现一些超时管理(如Session超时处理、请求超时处理)会有非常优雅和奇妙的效果 。
如果不会涉及多线程并发访问,如方法内部、同步访问区等,如果有随机写的需求可以考虑LinkedList或LinkedHashSet,如果需要快速检索元素是否已经存在于集合内可以考虑使用HashMap、HashSet,如果我们需要非常频繁且高效的遍历则应该采用ArrayList,如果我们需要排序,那么就必需要选择TreeMap、TreeSet喽,另外,LinkedList同时实现了List、Deque、Queue接口,用其来实现Stack也是可以的。
- java集合类结构梳理及用法简析
- Java集合框架的层次结构和使用规则梳理
- 找工作知识梳理--Java--集合类篇
- java集合梳理
- java集合梳理
- Java集合的梳理
- java集合框架总体梳理
- JAVA 集合框架结构简单梳理
- 【Java】常用集合类型梳理
- java集合树状结构及源码
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- Java集合类: Set、List、Map、Queue使用场景梳理
- 线性时间解决最大子数组问题
- 如何删除首选项 preferences Deleting shared
- RTGUI粗讲(个人见解篇之三、RTGUI WIDGET (3))
- 黑马程序员 — 基础加强(上)
- VS2010中添加ActiveX控件
- java集合类结构梳理及用法简析
- openSCAD中文教程
- 毕业前记
- Toyota Anti theft lock turn off
- PIC16F616-I/SL PIC16F616 认识及命名 需求及供应等
- 无法从const char [6]转换为LPCWSTR
- Sundy Android高级应用课程
- Install ibus-rime in Kubuntu(qt)
- string赋值-单引号和双引号的区别(php)