Guava简介

           博客原文请参考: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都是根据默认的自然排序或者用户指定的排序规则排好序的。

guava类结构图一.png guava类结构图二.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bboyzqh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值