`
arcticfox9902
  • 浏览: 108401 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[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

 

(未完待续)

以上。

 

 

分享到:
评论

相关推荐

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...

    Google Guava 官方教程

    **Google Guava官方教程** Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及...

    使用google guava 实现定时缓存功能

    在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...

    Getting Started with Google Guava

    《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...

    google guava 中文教程

    Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...

    google开源项目guava.jar包

    谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...

    guava-20.0-API文档-中文版.zip

    标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guavapdf-ch_GoogleGuava官方教程_

    **Google Guava官方教程概述** Google Guava 是一个开源库,为Java开发人员提供了一组核心库,包括集合、缓存、并发工具、I/O工具、字符串处理、实用方法等。这个官方教程主要针对Guava库的使用进行详细介绍,帮助...

    com.google.common.collect jar包

    首先,`com.google.common.collect`是Google Guava库的一部分,Guava是Google的一个开源项目,旨在提供一系列现代Java实践,包括高效的数据结构、实用的并发工具、字符串处理以及I/O等。Guava库中的`collect`模块...

    Google Guava

    Google Guava库是由Google开发的一个开源项目,旨在提供Java开发中常用的基础功能。它的目标是简化Java编程,为开发者提供更加清晰、高效的代码编写方式。通过使用Guava库,开发者可以不必在每次项目中重复编写相同...

    google guava

    Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...

    Google Guava 多版本集合

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...

    Getting Started with Google Guava code

    **Google Guava简介** Google Guava 是一个广泛使用的开源库,为Java开发人员提供了一系列实用工具类和集合框架。这个库旨在简化常见的编程任务,提高代码的可读性和可维护性。Guava 提供了丰富的功能,包括缓存、...

    com.google.common.collect

    在Java编程领域,`com.google.common.collect`是一个非常重要的包,它是Google的Guava库的一部分。Guava是一个广泛使用的开源库,提供了许多实用的集合框架、缓存、原生类型支持、并发工具、字符串处理等功能。`...

    google 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.pdf

    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

    google-guava.jar

    《谷歌Guava库详解》 谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、...

    Google的Guava工具包

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    Getting Started with Google Guava.pdf

    Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。Guava的目标是提供一种更加简洁、优雅的方式来处理常见的编程任务,并且在很多情况下...

    com.google.guava_1.6.0.jar.zip

    《深入解析Google Guava库:Ints模块》 在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`...

Global site tag (gtag.js) - Google Analytics