JDK_1.6---01---Java Collection Framework

  1. 1.新集合接口.
  2. (1)Deque:双端队列,支持两端的插入和移出,扩展了Queue。
  3. (2)BlockingDeque:支持接下来操作的Deque,当读取一个元素时,等待Deque成为非空;当存储一个元素时,等待空间可用。扩展了Deque和
  4. BlockingQueue。这个接口是java.util.concurrent的一部分。
  5. (3)NavigableSet:扩展了导航方法,为了给定搜索目标,提供最匹配结果的SortedSet。NavigableSet可以在升序或降序,被访问和移动。这
  6. 个接口用来代替SortedSet接口。
  7. (4)NavigableMap:扩展了导航方法,返回给定搜索目标最匹配结果的SortedMap。NavigableMap可以在升序或降序,被访问和移动。这个接口
  8. 用来代替SortedMap接口。
  9. (5)ConcurrentNavigableMap:一个并发的NavigableMap。这个接口是java.util.concurrent的一部分。
  10. 2.新集合接口的实现类.
  11. (1)ArrayDeque:实现Deque接口的高效率可变长的数组。
  12. (2)ConcurrentSkipListSet:实现NavigableSet接口,可量测的,并发的,可跳跃的列表实现。
  13. (3)ConcurrentSkipListMap:实现ConcurrentNavigableMap接口,可量测的,并发的,可跳跃的列表实现。
  14. (4)LinkedBlockingDeque:实现BlockingDeque接口,可量测的,并发的,可选FIFO(First-In,First-Out)模块化的以链接点为基础的Deque。
  15. (5)AbstractMap.SimpleEntry:Map.Entry简单的易变的实现。
  16. (6)AbstractMap.SimpleImmutableEntry:Map.Entry简单的不变的实现。
  17. 3.存在类的被重新实现新的接口。
  18. (1)LinkedList:重新实现了Deque接口。
  19. (2)TreeSet:实现NavigableSet接口。
  20. (3)TreeMap:实现NavigableMap接口。
  21. 4.两个新方法是被加入到Collections工具类中。
  22. (1)newSetFromMap(Map):从一个通过的Map实现,创建一个通用的Set实现。
  23. 这没有IdentityHashSet类,替代的,仅仅使用了:
  24. Set<Object>identityHashSet=Collections.newSetFromMap(newIdentityHashSet<Object,Boolean>());
  25. (2)asLifoQueue(Deque):返回一个后进先出LIFO(Last-In,First-Out)的队列Deque视图。
  26. 5.Arrays工具类,现在有copyOf和copyOfRange方法有效的改变大小,截取,为了所有类型的数组复制子数组。
  27. 之前:
  28. int[]newArray=newint[newLength];
  29. System.arrayCopy(oldArray,0,newArray,0,oldArray.length);
  30. 之后:
  31. int[]newArray=Arrays.copyOf(a,newLength);
  32. 6.Deque(DoubleEndsQueue)[deck(发音)]?
  33. (1)线性集合,支持元素的,两端插入,移出。
  34. (2)支持,元素限制。
  35. (3)提供insert,remove,examine方法,这些方法提供两种形式:
  36. [1]操作失败,一部分抛出异常,一部分返回特殊值(nullfalse,依赖方法。)。
  37. [2]元素限制的Deque实现,insert操作是被特殊设计;许多实现插入操作不可能失败。
  38. (4)继承Queue接口,作为Queue使用,结果为FIFO(First-In-First-Out).
  39. (5)也可以用作Stack使用,结果为FILO(First-In-Last-Out)。
  40. (6)提供两个方法,移出内部数据,removeFirstOccurrence和removeLastOccurrence。
  41. (7)该接口不支持索引访问元素。
  42. (8)Deque,实现类不严格要求,阻止null,但是是被推荐阻止null。不被鼓励使用的原因,null是被一些方法做为特殊的返回值,指示Deque为空。
  43. (9)Deque,不针对不同类型的元素,实现equals和hasCode方法,代替的是继承基于同一类型的类对象。
  44. (10)该接口属于JavaCollectionsFramework。
  45. (11)since1.6。
  46. 7.ArrayDeque?
  47. (1)实现Deque接口,没有元素限制。
  48. (2)非线程安全,不支持同步,并发操作。
  49. (3)不允许有空元素。
  50. (4)作为堆栈,快于Stack;作为队列,快于LinkedList。
  51. (5)除了,以下方法remove、removeFirstOccurrrence、removeLastOccurrence、contains、iterator.remove、批量操作,其它都是线性时间执行。
  52. (6)iterator方法返回的Iterators是fail-fast:如果Iterator创建后,除了Iterator的remove方法,Deque被任何方式,时间修改,将抛出
  53. ConcurrentModificationException。因此,并发修改时候,iterator快速明确的舍弃,胜于冒任意,在不确定时间的不确定行为等未来不可预知的风险。
  54. (7)ConcurrentModificationException,被推荐用来检查程序Bug,不被推荐用来保证并发修改。
  55. (8)该类实现了Collection和Iterator接口的所有可选方法。
  56. (9)该类属于JavaCollectionsFramework。
  57. (10)since1.6。
  58. 8.BlockingDeque?
  59. (1)支持模块化操作的Deque,取元素时,等待Deque成为非空。存储元素时,等待空间成为可用。
  60. (2)BlockingDeque方法有四种形式,不同方式的处理操作不能立即感到满意,但可能在未来一些时候,感到满意:
  61. [1]抛出异常。
  62. [2]返回特殊值(根据方法,返回nullfalse)。
  63. [3]阻塞当前线程,直到操作执行成功。
  64. [4]阻塞指定时间后,放弃。
  65. (3)像不同形式的BlockingQueue一样,该类是线程安全。
  66. (4)不允许空元素
  67. (5)可选,限制元素,与否。
  68. (6)作为FIFOBlockingQueue使用。
  69. (7)内存结合影响:像别的并发集合操作,在一个线程周期内,放置一个BlockingDeque,在子Deque插入或移出前。
  70. (8)该接口属于JavaCollectionsFrameWork。
  71. (9)since1.6。
  72. 9.LinkedBlockingDeque?
  73. (1)可选的元素限定,基于线性结点的模块化Deque。
  74. (2)可选的元素限定,可以作为预防过多的扩张。
  75. (3)元素限定capacity没有指定,默认为Integer.MAX_VALUE。
  76. (4)线性结点是被动态创建于每次插入元素之上的,除了capacity指定的Deque。
  77. (5)除了以下方法remove、removeFirstOccurrence、removeLastOccurrence、contains、iterator.remove、批量操作,其它花费时间都是线性的。
  78. (6)该类实现了Collection和Iterator接口的所有可选方法。
  79. (7)该类属于JavaCollectionsFramework。
  80. (8)since1.6。
  81. 10.NavigableSet?
  82. (1)实现导航方法,并返回指定搜索目标的最接近匹配结果的SortedSet。
  83. (2)方法lower、floor、ceiling、higher,返回元素分别是比给定元素小于、小于或等于、大于或等于、大于的元素。没有该元素,则返回
  84. null
  85. (3)可以被访问,升序或降序。
  86. (4)descendingSet返回所有相关的,反方向的元素视图。
  87. (5)升序操作快于降序操作。
  88. (6)加之定义了,pollFirst和pollLast方法。返回并移动最大和最小的元素。不存在此元素,返回null
  89. (7)方法subSet、headSet和tailSet不同于SortedSet的同名方法,接受附加的描述小的,大的相对排外的界定参数。
  90. (8)任何NavigableSet的子接口实际类,都得实现NavigableSet接口。
  91. (9)navigation方法的返回值是不确定的,在实现阻止null元素的实现类中。通过使用contains(null)方法来检测,消除歧义。
  92. (10)为了避免这个问题,这个接口的实现类是鼓励阻止插入null值的。
  93. 注意:Comparable排序的set本质上是不允许null值。
  94. (11)方法subSet(E,E)、headSet(E)和tailSet(E)是被指定返回实现NavigableSet的SortedSet,为了兼容允许SortedSet的实现类存在,但是,
  95. 这个接口的扩展接口或实现类,鼓励重载这些方法,返回NavigableSet。
  96. (12)该类属于JavaCollectionsFramework。
  97. (13)since1.6。
  98. 11.ConcurrentSkipListSet?
  99. (1)可量测的,并发的,基于ConcurrentSkipListMap,NavigableSet方法。
  100. (2)这些元素被排序根据他们的自然顺序,或通过创建Set时的Comparator,依赖使用的构造方法。
  101. (3)这个实现类提供了log(n)时间花费的contains、add、remove方法和变量。
  102. (4)支持多线程并发插入,移出,访问。
  103. (5)Iterator实现是弱的,返回元素在一些点或创建Iterator时,是反映Set状态的。他们不抛出ConcurrentModificationException异常,可以
  104. 并发别的操作。升序的Iterator和视图,快于降序。
  105. (6)小心,不像大多数集合,size方法不是常量时间的操作。因为这些Set是不同步的,决定元素的个数是需要元素的往返移动。
  106. (7)批量操作,addAll、removeAll、retainAll、containsAll,是不保证原子执行的。
  107. 举例:一个iterator和addAll并发,浏览的数据可能是加入的一部分。
  108. (8)这个类和他的iterator实现了,Set和Iterator接口可选的所有方法。像多数别的并发集合实现,这个类不允许null元素,因为,null元素
  109. 和返回值null,不能被正确区分。
  110. (9)该类属于JavaCollectionsFramework。
  111. (10)since1.6。
  112. 12.NavigableMap?
  113. (1)扩展了导航方法并返回给定搜索目标的最接近匹配结果的SortedMap。
  114. (2)lowerEntry、floorEntry、ceilingEntry、higherEntry返回比给定key小于、小于等于、大于等于、大于的key所关联的Map.Entry对象。没
  115. 有这样的key,返回null
  116. (3)同样的,lowerKey、floorKey、ceilingKey、higherKey方法,仅仅返回关联key。
  117. (4)以上方法,被设计,定位但不移动条目。
  118. (5)可以通过升序或降序的key来访问和移动条目。
  119. (6)descendingMap方法返回一个所有关系、方向上相反的视图。
  120. (7)升序操作和视图快于降序。
  121. (8)subMap、headMap、tailMap不同于SortedMap中的同名方法,接受附加的描述小的,大的相对排外的界定参数。
  122. (9)任何NavigableMap的子接口实现类,必须实现NavigableMap接口。
  123. (10)接口加之定义了firstEntry、pollFirstEntry、lastEntry、pollLastEntry返回或返回并移动最小或最大的映射。不存在则返回null
  124. (11)返回Entry方法的执行是期望返回记录映射建造时快照的Map.Entry,因此通常不支持可选的Entry.setValue方法。
  125. 注意:使用put方法可以改变关联中Map的映射。
  126. (12)subMap(K,K)、headMap(K)、tailMap(K)是被指定返回实现NavigableMap的SortedMap,为了兼容允许SortedMap的实现类存在,但是,
  127. 这个接口的扩展接口或实现类,鼓励重载这些方法,返回NavigableMap。同样,可以重载SortedMap.keySet()方法返回NavigableMap。
  128. (13)该类属于JavaCollectionsFramework。
  129. (14)since1.6。
  130. 13.ConcurrentNavigableMap?
  131. (1)支持导航操作的ConcurrentMap。
  132. (2)该类属于JavaCollectionsFramework。
  133. (3)since1.6。
  134. 14.ConcurrentSkipListMap?
  135. (1)可量测的、并发的ConcurrentNavigableMap实现类。该Map是被排序根据key的自然顺序,或创建时,根据comparator排序,依赖于构造函数。
  136. (2)该实现类实现了一个并发的SkipLists变量,提供了一个预期的平均log(n)执行时间的containsKey、get、put、remove操作和变量。
  137. (3)插入,移出,更新,访问操作支持多线程并发。
  138. (4)Iterator是弱实现的,在有时或Iterator创建时,返回的元素反映了Map的状态。不抛出ConcurrentModificationException异常,可以继续执
  139. 行其它操作。
  140. (5)升序key的排序视图和Iterator是快于降序的。
  141. (6)这个类中方法返回的Map.Entry和视图,表现了他们创建时的映射的一个快照。他们不支持Entry.setValue操作。
  142. 注:使用put,putIfAbsent,replace可能改变关联的映射,依赖于你需要的严密性。
  143. (7)小心,不像大多数集合实现类,size方法不是常量时间执行的。因为这些Map是异步,决定元素的个数是需要元素的往返移动。
  144. (8)putAll,equals,clear是不保证原子执行的。
  145. 例如:iterator操作和putAll并发操作,显示的视图可能是加入的一部分元素。
  146. (9)这个类实现了Map、Iterator接口的所有可选方法。像许多别的并发实现类,该类不允许null元素,因为,null元素和返回值null,不能被正确
  147. 区分。
  148. (10)该类属于JavaCollectionsFramework。
  149. (11)since1.6。

你可能感兴趣的:(java,jdk,多线程)