美文网首页
Guava学习

Guava学习

作者: hhfchyl | 来源:发表于2017-11-01 20:06 被阅读0次

通过使用guava库,让代码简洁易扩展。


1、条件检查

业务代码书写过程中,各种判空和参数检查是不可避免的,重复繁琐的代码让项目显得臃肿丑陋。所以我们可以借用guava封装前置条件检查的函数,下面介绍两个最常用的方法。

checkArgument(boolean) 检查boolean是否为true,用来检查传递给方法的参数

checkNotNull(T) 检查value是否为null,该方法返回value,可内嵌使用。


2、排序器

Ordering是Guava最常用的Comparator类,比comparator更易扩展。

A Ordering的新建

Order<String> natural = Ordering.natural(); //使用自然顺序, 例如:整数从小到大,字符串是按字典顺序

Order<String> usingToString = Ordering.usingToString(); //使用toString()返回的字符串按字典顺序进行排序

Ordering byLengthOrdering =new Ordering() {@Override public intcompare(@NullableString s,@NullableString t1) {returnInts.compare(s.length(),t1.length());}}; //自定义排序规则

B Ordering的使用

reverse() //相反的排序

isOrdered(Collection<T> c) //是否是有序的

sortedCopy(Collection<T> c) //返回排序好的队列


3、集合

集合类的封装,不再需要繁琐的编码方式。

A 不可变集合

ImmutableSet/ImmutableList/ImmutableMap //不可变

ImmutableSortedSet //自动排序

ImmutableMultiset //可以重复,可以统计某个值在 set集合中有多少个

B 特殊集合

BiMap //双向Map,可以通过reverse()反转key-value

MultiMap //value可为一个list

RangeMap //描述了”不相交的、非空的区间”到特定值的映射,不合并相邻的区间

Forwarding //装饰器,类继承ForwardingXXX,可以重新方法add/delegate等方法


4、缓存 Guava Cache

cache是线程安全的,类似于concurrentMap,但是内部封装更多的方法

http://ifeve.com/google-guava-cachesexplained/


5、函数式编程

重点学习的部分,将繁琐的代码简化。函数式编程最常见的就是用于集合的转换和过滤。

A list值转换

B list转换为map

C 过滤 predicate

6、guava的并发编程

重点是ListenableFuture,ListenableFuture可以监控Future是否执行完成。Future的计算是异步的,但是获取结果在主线程中,是会阻塞主线程的。但是如果通过ListenableFuture,那么获取结果也是新开线程,并不阻塞主线程。适用的场景是多个任务并发计算,某个任务的计算时间特别长。举例如下

A 直接在主线程获取结果并处理,耗时512ms

B 使用ListenableFuture,耗时14ms

相关文章

  • Guava 学习

    guava Splitter 学习 guava Sets 集合类取交集、差集、并集

  • 1、guava简介

    转载:Guava学习笔记:Google Guava 类库简介 Guava项目包含我们在基于Java的项目中依赖的几...

  • Guava学习笔记:Optional优雅的使用null

    Guava学习笔记:Optional优雅的使用null 在我们学习和使用Guava的Optional之前,我们需要...

  • Guava

    1.Guava学习笔记:Google Guava 类库简介[http://www.cnblogs.com/peid...

  • Guava学习

    Google生产的工具类,目的是简化开发 Optional - 用来表示可能为null的T类型引用(增强null的...

  • Guava学习

    通过使用guava库,让代码简洁易扩展。 1、条件检查 业务代码书写过程中,各种判空和参数检查是不可避免的,重复繁...

  • Guava学习

    Guava学习笔记之Joiner ,Strings,Splitter 工具实例 一.Strings 二,Joine...

  • Guava学习

    字符串处理 Joiner是连接器,Splitter是分割器,通常我们会把它们定义为static final,利用o...

  • Guava -- 集合类 和 Guava Cache

    Guava -- 集合类 和 Guava Caches 1. 什么是 Guava Guava 是 google ...

  • guava 限流RateLimiter 初探(一)

    Guava RateLimiter Guava RateLimiter原理 Guava RateLimiter基于...

网友评论

      本文标题:Guava学习

      本文链接:https://www.haomeiwen.com/subject/ojpbpxtx.html