作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服
Java集合总览

Custom Tab

Arrays

Array是Java特有的数组。在你知道所要处理数据元素个数的情况下非常好用。java.util.Arrays包含了许多处理数据的实用方法:

如果想要复制整个数组或其中一部分到另一个数组,可以调用 System.arraycopy方法。此方法从源数组中指定的位置复制指定个数的元素到目标数组里。这无疑是一个简便的方法。(有时候用 ByteBuffer bulk复制会更快。可以参考这篇文章).

最后,所有的集合都可以用T[] Collection.toArray( T[] a ) 这个方法复制到数组中。通常会用这样的方式调用:

1    return coll.toArray( new T[ coll.size() ] );

这个方法会分配足够大的数组来储存所有的集合,这样 toArray 在返回值时就不必再分配空间了。

单线程集合

这一部分介绍的是不支持多线程的集合。这些集合都在java.util包里。其中一些在Java 1.o的时候就有了(现在已经弃用),其中大多数在Java 1.4中重新发布。枚举集合在Java 1.5中重新发布,并且从这个版本之后所有的集合都支持泛型。PriorityQueue也在Java 1.5中加入。非线程安全的集合架构的最后一个版本是ArrayDeque ,也在Java 1.6中重新发布了。

List

Queues/deques

Maps

Sets

java.util.Collections

就像有专门的java.util.Arrays来处理数组,Java中对集合也有java.util.Collections来处理。

第一组方法主要返回集合的各种数据:

第二组方法中,其中有一些方法因为某些原因没有加入到集合中:

并发集合

这一部分将介绍java.util.concurrent包中线程安全的集合。这些集合的主要属性是一个不可分割的必须执行的方法。因为并发的操作,例如addupdate或者checkupdate,都有一次以上的调用,必须同步。因为第一步从集合中组合操作查询到的信息在开始第二步操作时可能变为无效数据。

多数的并发集合是在Java 1.5引入的。ConcurrentSkipListMap / ConcurrentSkipListSet 和 LinkedBlockingDeque是在Java 1.6新加入的。Java 1.7加入了最后的 ConcurrentLinkedDeque和 LinkedTransferQueue

Lists

Queues/deques

Maps

Sets

ConcurrentSkipListSet:使用 ConcurrentSkipListMap来存储的线程安全的Set。
CopyOnWriteArraySet:使用CopyOnWriteArrayList来存储的线程安全的Set。

相关阅读

推荐阅读

如果想要了解更多关于Java集合的知识,推荐阅读以下书籍:

总结



单线程并发
Lists
  • ArrayList——基于泛型数组

  • LinkedList——不推荐使用

  • Vector——已废弃(deprecated)

  • CopyOnWriteArrayList——几乎不更新,常用来遍历

Queues / deques
  • ArrayDeque——基于泛型数组

  • Stack——已废弃(deprecated)

  • PriorityQueue——读取操作的内容已排序

  • ArrayBlockingQueue——带边界的阻塞式队列

  • ConcurrentLinkedDeque / ConcurrentLinkedQueue——无边界的链表队列(CAS)

  • DelayQueue——元素带有延迟的队列

  • LinkedBlockingDeque / LinkedBlockingQueue——链表队列(带锁),可设定是否带边界

  • LinkedTransferQueue——可将元素`transfer`进行w/o存储

  • PriorityBlockingQueue——并发PriorityQueue

  • SynchronousQueue——使用Queue接口进行Exchanger

Maps
  • HashMap——通用Map

  • EnumMap——键使用enum

  • Hashtable——已废弃(deprecated)

  • IdentityHashMap——键使用==进行比较

  • LinkedHashMap——保持插入顺序

  • TreeMap——键已排序

  • WeakHashMap——适用于缓存(cache)

  • ConcurrentHashMap——通用并发Map

  • ConcurrentSkipListMap——已排序的并发Map

Sets
  • HashSet——通用set

  • EnumSet——enumSet

  • BitSet——比特或密集的整数Set

  • LinkedHashSet——保持插入顺序

  • TreeSet——排序Set


  • ConcurrentSkipListSet——排序并发Set

  • CopyOnWriteArraySet——几乎不更新,通常只做遍历

原文链接: java-performance 翻译: ImportNew.com 赖 信涛
译文链接: http://www.importnew.com/13801.html














Home