博客原文请参考:http://zhuqiuhui.space/Blogs/2017/03/guava-api-collect.html
Guava 是一个 Google 的基于 java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O 等等,这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。
一、Guava简介
com.google.common.annotations:普通注解类型。
com.google.common.base:基本工具类库和接口。
com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。
com.google.common.collect:带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合。
com.google.common.eventbus:发布订阅风格的事件总线。
com.google.common.hash: 哈希工具包。
com.google.common.io:I/O工具包。
com.google.common.math:原始算术类型和超大数的运算工具包。
com.google.common.net:网络工具包。
com.google.common.primitives:八种原始类型和无符号类型的静态工具包。
com.google.common.reflect:反射工具包。
com.google.common.util.concurrent:多线程工具包。
二、常用集合类
- (1)Multimap接口:可以存放一个key值对应多个value实体,其子接口有ListMultimap、SetMultimap、SortedSetMultimap,实现类有ArrayListMultimap, ForwardingListMultimap, ForwardingMultimap, ForwardingSetMultimap, ForwardingSortedSetMultimap, HashMultimap, ImmutableListMultimap, ImmutableMultimap, ImmutableSetMultimap, LinkedHashMultimap, LinkedListMultimap, TreeMultimap。
- (2)BiMap接口:存放key和value均唯一的实体,其父接口是Map接口,实现类有:EnumBiMap(key和valu都是enum类型), EnumHashBiMap, HashBiMap(key和value都有HashMap实现), ImmutableBiMap(不可修改的BiMap)。
- (3)Multiset接口:能存放相同的元素,且元素之间的顺序是无序的。常用的实现类有:HashMultiSet(元素存放于HashMap中)、LinkedHashMultiset(元素存放于LinkedHashMap中)、TreeMultiset(元素被排序存放于TreeMap中)、EnumMultiset(元素是enum类型)、ImmutableMultiset(不可修改的Multiset)。
- (4)Immutable类集合:该类集合里面存放的是不可变对象,好处是保证线程安全、可以作为常量等,常用的有ImmutableCollection、ImmutableList、ImmutableSet、ImmutableSortedSet、ImmutableMap、ImmutableSortedMap、ImmutableMultiset、ImmutableSortedMultiset、ImmutableMultiMap、ImmutableListMultiMap、ImmutableSetMultiMap、ImmutableBiMap、ImmutableTable等。
- (5)Range:该类提供了和区间计算相关的数据结构及操作。
- (6)RangeSet接口:用来处理一系列不连续,非空的range。当添加一个range到一个RangeSet之后,任何有连续的range将被自动合并,而空的range将被自动去除。其实现类有:ImmutableRangeSet、TreeRangeSet。
- (7)RangeMap接口:它将不相交、且不为空的Range(作为key)映射给一个值(value),其实现类有ImmutableRangeMap、TreeRangeMap。
- (8)Preconditions:工具类base中,用于提供参数检验,其方法均为static类型的,可使用如:Preconditions.checkNotNull(student)。
- (9)Splitter:从输入的字符串中抽取不重复的子串,通常是分析给定的分割序列。
- (10)Lists类:主要提供了对List类的子类构造以及操作的静态方法,其方法都是静态的。
- (11)Iterators类:提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法。
- (12)HashBiMap:实现了BiMap接口,继承了Abstract类,存储的键值都唯一。
- (13)ArrayListMultimap:Multimap接口的ArrayList方法实现的类。
- (14)SetMultimap接口:实现了Multimap接口,子类实例中同一个key不能存储相同的value,实现类有:ForwardingSetMultimap, ForwardingSortedSetMultimap, HashMultimap, ImmutableSetMultimap, LinkedHashMultimap, TreeMultimap。
- (15)AbstractSetMultimap:抽象类,实现SetMultimap接口,其具体实现都是调用了AbstractMapBasedMultimap类中的相应实现,只是将AbstractMapBasedMultimap类中返回类行为collection改为Set。
- (16)SortedSetMultimap接口:其实现类中key对应的value是有序的。
- (17)TreeMultimap:实现了Multimap接口,其中的key和value都是根据默认的自然排序或者用户指定的排序规则排好序的。