[Google Guava笔记](六)collect

5 com.google.common.collect:包括常用的 collection接口和实现,以及相关的工具类。

 

 

接口:

5.1    BiMap<K, V>:继承 Map<K, V>接口。这个 Map要求键和值都是独一无二的,不能有相同的键或值,使得 BiMap的键值互换后也是一个 BiMap。它定义了 inverse()方法,用于返回键值互换后的 BiMap

5.2    ClassToInstanceMap<B>:继承 Map<Class<? extends B>, B>接口。通过类获取相应类的实例。定义了两个方法: getInstance(Class<T>):T putInstance(Class<T>, T):T

5.3    Constraint<E> checkElement(E element):如果 element满足条件则返回 element,否则抛出异常。

5.4    Interner<E>:对不可改变的类型提供类似于 String.intern的功能。定义了一个方法: intern(E sample):E

5.5    Multimap<K, V>:继承 Map<K, V>接口,允许一个键对应多个值。

5.6    ListMultimap<K, V>:继承 Multimap<K, V>接口,允许有重复的键值对,对于一个给定的 key,插入的 value按照插入的顺序排序。

5.7    MapConstraint<K, V>:对将要被插入 Map Multimap key value的约束。 定义了一个方法: checkKeyValue(K key, V value)

5.8    MapDifference<K, V>:这个接口用于描述两个 Map之间的差异。

5.9    MapDifference.ValueDifference<V>:这个接口用于描述两个 Map的同一个 key映射的 value之间的不同。

5.10  MapEvictionListener<K, V>:当一个 entry map中被赶出 ?时,这个接口用于接收通知。它的实例可能被多个线程调用。

5.11  Multiset<E>:继承 Collection<E>接口,允许有重复的元素,也被称作” bag“

5.12  Multiset.Entry<E> multiset的元素 -数量对,是不可修改的。

5.13  PeekingIterator<E>:继承 Iterator<E>接口。增加了迭代时元素的前视功能,调用 peek()可以获得下一个元素,但是不会改变 Iterator的状态。

5.14 Table<R, C, V>:有一对有序的 key和一个 value key分别称为行 key和列 key。一个 table可能是个稀疏表,只有一小部分表格元素有值。

5.15  Table.Cell<R, C, V>:由行 key、列 key value组成的三元组。

5.16  RowSortedTable<R, C, V>:继承 Table<R, C, V>接口,对行进行排序。

5.17  SetMultimap<K, V>:继承 Multimap<K, V>接口,不允许有重复的键值对,插入 map中已经有的键值对不会产生效果。

5.18  SortedSetMultimap<K, V>:继承 SetMultimap<K, V>接口,对同一个 key的多个 value按序保存。

5.19  SortedMapDifference<K, V>:继承 MapDifference<K, V>接口,用于描述两个 sorted map之间的差异。

 

 

类:

5.20  ForwardingObject:抽象类,这个类实现了装饰器模式,有一个抽象方法: delegate(): Object

5.21  ForwardingMap<K, V> ForwardingCollection<E> ForwardingIterator<T> ForwardingMapEntry<K, V> ForwardingMultimap<K, V> ForwardingTable<R, C, V>:抽象类,继承了 ForwardingObject,实现了相应接口。有一个抽象方法: delegate()

5.22  AbstractBiMap<K, V>:抽象类,继承 ForwardingMap<K, V>,实现 BiMap<K, V>接口。 内部包装了一个 Map

5.23  AbstractMapEntry<K, V>:抽象类,实现了 java Entry<K, V>接口,主要实现了 equals() hashCode() toString()方法。

5.24  AbstractMultimap<K, V>:抽象类,实现了 Multimap<K, V>接口。

5.25  AbstractMultiset<E>:抽象类,继承自 AbstractCollection<E>,实现了 Multiset<E>接口。

5.26  AbstractSetMultimap<K, V>:抽象类,继承自 AbstractMultimap<K, V>,实现了 SetMultimap<K,V>

5.27  AbstractSortedSetMultimap<K, V>:抽象类,继承自 AbstractSetMultimap<K, V>,实现了 SortedSetMultimap<K,V>

5.28  AbstractListMultimap<K,V>:抽象类,继承自 AbstractMultimap<K, V>,实现了 ListMultimap<K,V>

5.29  AbstractMapBasedMultiset<E>:抽象类,继承自 AbstractMultiset<E>。内部包装了一个 Map key set的元素, value是该元素的数量。

5.30  UnmodifiableIterator<E>:抽象类,实现了 Iterator<E>,不支持 remove()方法,该方法会抛出异常。

5.31  AbstractIterator<T>:抽象类,继承 UnmodifiableIterator<T>

5.32  UnmodifiableListIterator<T>:抽象类,继承 UnmodifiableIterator<T>,实现了 ListInterator<T>接口。

5.33  AbstractIndexedListIterator<T>:抽象类,继承 UnmodifiableListIterator <T>

5.34  AbstractLinkedIterator<T>:抽象类,继承 UnmodifiableIterator <T>

5.35  ArrayListMultimap<K,V>:继承 AbstractListMultimap<K,V>类。

5.36  Ordering<T>:抽象类,实现了 Comparator<T>接口。增加了一些方法以支持常用的功能。

5.37  NaturalOrdering<T>:继承 Ordering<T>类。两个比较对象的大小由比较对象的 compareTo()决定。

5.38  ReverseNaturalOrdering<T>:继承 Ordering<T>类。与 NaturalOrdering<T>的比较结果相反。

5.40  ExplicitOrdering<T>:继承 Ordering<T>类。两个比较对象的大小由给定顺序决定。

5.41  UsingToStringOrdering:继承 Ordering<T>类。将被比较对象的 toString()结果按照字符串的 compareTo()进行比较。

5.42  CompoundOrdering<T>:继承 Ordering<T>类。 按多种 Ordering的复合比较。

5.43  ByFunctionOrdering<F,T>:继承 Ordering<T>类。对被比较对象调用方法 F,将结果按内部包装的 ordering进行比较。

5.44  LexicographicalOrdering<T>: 继承 Ordering<Iterable<T>>类。内部包装了一个 ordering对象,对可迭代的两个被比较对象按字典序,用内部的 ordering进行比较。

5.45  NullsFirstOrdering<T>:继承 Ordering<Iterable<T>>类。认为 null比其他值小。

5.46  NullsLastOrdering<T>:继承 Ordering<Iterable<T>>类。认为 null比其他值大。

p { margin-bottom: 0.08in; }

5.47  Collections2:提供了与 Collection相关的一些静态方法。

静态方法:

     filter(Collection<E> unfiltered, Predicate<? super E> predicate):返回 Collection<E>,它封装了 unfiltered和 predicate,向这个 collection添加元素时先用 predicate检查元素是否规范,符合规范才添加到 collection里。

       transform(Collection<F> fromCollection,Function<? super F, T> function):返回 Collection<E>,它封装了 fromCollection 和 function,它的 iterator()方法返回的迭代器是转换后的迭代器,该迭代器的 next()返回值是 fromCollection的迭代器的 next()返回值经过 function计算的结果。

 

5.48 ComparisionChain:抽象类,有两个内部类,其中一个为匿名内部类。

静态方法:

          start():返回 ComparisonChain的实例 ACTIVE ACTIVE是匿名内部类的实例,调用它的 compare(left, right)方法时,如果 left<right则返回 LESS,如果 left>right则返回 GREATER, 如果相等则返回 ACTIVE,它的 result()方法返回 0 LESS compare()方法返回它本身, result()方法返回 -1 GREATER compare()方法返回它本身, result()方法返回 1

 

成员方法:

compare(...):抽象方法,返回 ComparisonChain

result():抽象方法,返回 int型,一般为 -1 0 1

 

5.49  GenericMapMaker<K0, V0>:抽象类,只定义了接口,没有实现,内部封装了一个 MapEvictionListener

5.50  MapMaker final类,继承了 GenericMapMaker<Object, Object>,是 ConcurrentMap builder。它的构造方法是公开的,可以直接通过 new获取一个实例。

成员方法:

          initialCapacity(int initialCapacity):如果 this的初始容量已经设置过了,则抛出异常,否则将其设为参数中的 initialCapacity,并返回 this

          maximumSize(int size):如果 this maximumSize已经设置过了,则抛出异常,否则将其设为 size,并返回 this

          concurrencyLevel(int concurrencyLevel):如果 this concurrencyLevel 已经设置过了,则抛出异常,否则将其设为参数中的 concurrencyLevel,并返回 this

          weakKeys():如果 this keyStrength 已经设置过了,则抛出异常,否则将其设为 Strength.WEAK,将 useCustomMap设为 true,并返回 this

          softKeys():如果 this keyStrength 已经设置过了,则抛出异常,否则将其设为 Strength.SOFT,将 useCustomMap设为 true,并返回 this

          weakValues():如果 this valueStrength 已经设置过了,则抛出异常,否则将其设为 Strength.WEAK,将 useCustomMap设为 true,并返回 this

          softValues():如果 this valueStrength 已经设置过了,则抛出异常,否则将其设为 Strength.SOFT,将 useCustomMap设为 true,并返回 this

          expireAfterWrite(long duration, TimeUnit unit):如果 this expireAfterWriteNanos 已经设置过了,则抛出异常,否则将其设为 unit.toNanos(duration),将 useCustomMap设为 true,并返回 this

          expireAfterAccess(long duration, TimeUnit unit):如果 this expireAfterAccessNanos 已经设置过了,则抛出异常,否则将其设为 unit.toNanos(duration),将 useCustomMap设为 true,并返回 this

          evictionListener(MapEvictionListener<K, V> listener):如果 this evictionLisener已经设置过了,则抛出异常,否则将其设为 listener,将 useCustomMap设为 true,并返回 this

          makeMap():如果 useCustomMap false,返回一个 ConcurrentHashMap,否则判断 useNullMap,如果为 true,返回一个 NullConcurrentMap,否则返回一个 CustomConcurrentHashMap NullConcurrentMap是内部类,不包含任何键值对。

          makeComputingMap(Funcion<? super K, ? extends V> computingFunction):返回一个 ConcurrentMap。根据 this,创建一个 NullComputingConcurrentMap ComputingConcurrentMap NullComputingConcurrentMap是继承 NullConcurrentMap实现 Cache接口 (Cache继承 Function接口,定义了一个方法: asMap():ConcurrentMap)的内部类,它的 apply(K key)方法返回 computingFunction计算 key的结果, asMap()方法返回 this

 

(未完待续)

以上。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值