java集合类结构梳理及用法简析

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也是可以的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值