5.51 CustomConcurrentHashMap<K,V>:继承 AbstractMap<K,V>,实现 ConcurrentMap<K,V>。
以下内容引自:http://www.blogjava.net/xylz/archive/2010/07/20/326661.html,在此对imxylz表示感谢!
默认情况下 ConcurrentHashMap是用了 16个类似 HashMap 的结构,其中每一个 HashMap拥有一个独占锁。也就是说最终的效果就是通过某种 Hash算法,将任何一个元素均匀的映射到某个 HashMap的 Map.Entry上面,而对某个一个元素的操作就集中在其分布的 HashMap上,与其它 HashMap无关。这样就支持最多 16个并发的写操作。
5.52 ComputingConcurrentHashMap<K,V>:继承 CustomConcurrentHashMap<K,V>,实现 Cache<K,V>。
5.53 ForwardingConcurrentMap<K,V>:抽象类,继承 ForwardingMap<K,V>,实现 ConcurrentMap<K,V>。它的子类有 MapMaker.ComputingMapAdapter和 ComputingConcurrentHashMap.AdbstractSerializationProxy。
5.54 ConcurrentHashMuiltiset<E>:继承 AbstractMultiset<E>。
5.55 Constraints:是 Constraint的工厂类和工具类。
静态方法:
notNull():返回一个检查参数是否为空的 Constraint。
constraintCollection(Collection<E> collection, Constraint<? Super E> constraint):返回一个 Collection,该 Collection的添加新的元素的操作是被 constraint约束的,如果被插入的元素不满足 constraint约束则会抛出异常。
其它的静态方法与 constraintCollection类似,只是 Collection的类型不同。
5.56 ImmutableCollection<E>:抽象类,实现了 Collection<E>接口,是不可改变的容器,不支持增加、删除元素的操作。有四个内部类: EmptyImmutableCollection、 ArrayImmutableCollection、 SerializedForm、 Builder。
5.57 ImmutableXXX、 EmptyImmutableXXX、 RegularImmutableXXX、 SingletonImmutableXXX: ImmutableCollection的子类 (或子类的子类 ), EmptyXXX容器没有任何元素, SingletonXXX容器只有一个元素, RegularXXX有一个或多个元素。
5.58 EnumBiMap:
5.59 EnumHashBiMap:
5.60 EnumMultiset:
5.61 ForwardingXXX:内部封装了相应的对象,它的所有方法都直接转到封装对象的方法。
5.62 StandardTable<R, C, V>:实现了 Table接口,内部封装了一个 Map<R, Map<C, V>>: backingMap和一个工厂 factory。
成员方法:
cellSet():返回由 Table的元素 Cell组成的 Set。
row(R rowKey):返回行为 rowKey的 Map<C, V>。
column(C columnKey):返回列为 columnKey的 Map<R, V>。
rowKeySet():返回由 Table的行 Key组成的 Set。
columnKeySet():返回由 Table的列 Key组成的 Set。
values():返回由 Table的值组成的 Collection。
rowMap():返回以行 Key为键的 Map。
columnMap():返回以列 Key为键的 Map。
5.63 HashBasedTable<R, C, V>:继承 StandardTable<R, C, V>。
静态方法:
create(...):新建一个 HashBasedTable。
以上。