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。
(未完待续)
以上。
分享到:
相关推荐
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
**Google Guava官方教程** Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及...
在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...
《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...
Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...
谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...
标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
**Google Guava官方教程概述** Google Guava 是一个开源库,为Java开发人员提供了一组核心库,包括集合、缓存、并发工具、I/O工具、字符串处理、实用方法等。这个官方教程主要针对Guava库的使用进行详细介绍,帮助...
首先,`com.google.common.collect`是Google Guava库的一部分,Guava是Google的一个开源项目,旨在提供一系列现代Java实践,包括高效的数据结构、实用的并发工具、字符串处理以及I/O等。Guava库中的`collect`模块...
Google Guava库是由Google开发的一个开源项目,旨在提供Java开发中常用的基础功能。它的目标是简化Java编程,为开发者提供更加清晰、高效的代码编写方式。通过使用Guava库,开发者可以不必在每次项目中重复编写相同...
Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...
**Google Guava简介** Google Guava 是一个广泛使用的开源库,为Java开发人员提供了一系列实用工具类和集合框架。这个库旨在简化常见的编程任务,提高代码的可读性和可维护性。Guava 提供了丰富的功能,包括缓存、...
在Java编程领域,`com.google.common.collect`是一个非常重要的包,它是Google的Guava库的一部分。Guava是一个广泛使用的开源库,提供了许多实用的集合框架、缓存、原生类型支持、并发工具、字符串处理等功能。`...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Google Guava 官方教程 v1.1 2018-07-22 https://github.com/tianbian224/GuavaLearning/blob/master/Google%20Guava%20%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%20-%20v1.1.pdf
《谷歌Guava库详解》 谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。Guava的目标是提供一种更加简洁、优雅的方式来处理常见的编程任务,并且在很多情况下...
《深入解析Google Guava库:Ints模块》 在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`...