首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[Google Guava札记](六)collect

2012-10-25 
[Google Guava笔记](六)collect5com.google.common.collect:包括常用的collection接口和实现,以及相关的工

[Google Guava笔记](六)collect

5com.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(Eelement):如果element满足条件则返回element,否则抛出异常。

5.4 ??Interner<E>:对不可改变的类型提供类似于String.intern的功能。定义了一个方法:intern(Esample):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.14Table<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>接口,用于描述两个sortedmap之间的差异。

?

?

类:

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<? superE>predicate):返回Collection<E>,它封装了unfiltered和predicate,向这个collection添加元素时先用predicate检查元素是否规范,符合规范才添加到collection里。

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

?

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

静态方法:

?????????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(intinitialCapacity):如果this的初始容量已经设置过了,则抛出异常,否则将其设为参数中的initialCapacity,并返回this。

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

?????????concurrencyLevel(intconcurrencyLevel):如果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(longduration, TimeUnit unit):如果this的expireAfterWriteNanos已经设置过了,则抛出异常,否则将其设为unit.toNanos(duration),将useCustomMap设为true,并返回this。

?????????expireAfterAccess(longduration, 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(Kkey)方法返回computingFunction计算key的结果,asMap()方法返回this。

?

(未完待续)

以上。

?

?

热点排行