加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

为什么强烈推荐Java程序员使用Google Guava编程

发布时间:2019-08-07 12:59:14 所属栏目:移动互联 来源:Java从算法到架构
导读:目前Google Guava在实际应用中非常广泛,本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家分享!学习使用Google Guava可以让你快乐编程,写出优雅的JAVA代码! 以面向对象思想处理字符串:Joiner/Splitter/CharMatcher JDK提供的String还不够

biMap / biMap.inverse() / biMap.inverse().inverse() 它们是什么关系呢?你可以稍微看一下BiMap的源码实现,实际上,当你创建BiMap的时候,在内部维护了2个map,一个forward map,一个backward map,并且设置了它们之间的关系。因此,biMap.inverse() != biMap ;biMap.inverse().inverse() == biMap

可不可以多个KEY:Table

我们知道数据库除了主键外,还提供了复合索引,而且实际中这样的多级关系查找也是比较多的,当然我们可以利用嵌套的Map来实现:Map<k1,Map<k2,v2>>。为了让我们的代码看起来不那么丑陋,guava为我们提供了Table。

为什么强烈推荐Java程序员使用Google Guava编程

Table

Table涉及到3个概念:rowKey,columnKey,value,并提供了多种视图以及操作方法让你更加轻松的处理多个KEY的场景。

函数式编程:Functions

为什么强烈推荐Java程序员使用Google Guava编程

Functions

上面的代码是为了完成将List集合中的元素,先截取5个长度,然后转成大写。函数式编程的好处在于在集合遍历操作中提供自定义Function的操作,比如transform转换。我们再也不需要一遍遍的遍历集合,显著的简化了代码!

为什么强烈推荐Java程序员使用Google Guava编程

对集合的transform操作可以通过Function完成

断言:Predicate

为什么强烈推荐Java程序员使用Google Guava编程

Predicate最常用的功能就是运用在集合的过滤当中!

为什么强烈推荐Java程序员使用Google Guava编程

filter

需要注意的是Lists并没有提供filter方法,不过你可以使用Collections2.filter完成!

check null and other:Optional、Preconditions

在guava中,对于null的处理手段是快速失败,你可以看看guava的源码,很多方法的第一行就是:Preconditions.checkNotNull(elements);

要知道null是模糊的概念,是成功呢,还是失败呢,还是别的什么含义呢?

为什么强烈推荐Java程序员使用Google Guava编程

Preconditions/Optional

Cache is king

对于大多数互联网项目而言,缓存的重要性,不言而喻!如果我们的应用系统,并不想使用一些第三方缓存组件(如redis),我们仅仅想在本地有一个功能足够强大的缓存,很可惜JDK提供的那些SET/MAP还不行!

为什么强烈推荐Java程序员使用Google Guava编程

CacheLoader

首先,这是一个本地缓存,guava提供的cache是一个简洁、高效,易于维护的。为什么这么说呢?因为并没有一个单独的线程用于刷新 OR 清理cache,对于cache的操作,都是通过访问/读写带来的,也就是说在读写中完成缓存的刷新操作!其次,我们看到了,我们非常通俗的告诉cache,我们的缓存策略是什么,SO EASY!在如此简单的背后,是guava帮助我们做了很多事情,比如线程安全。

让异步回调更加简单

JDK中提供了Future/FutureTask/Callable来对异步回调进行支持,但是还是看上去挺复杂的,能不能更加简单呢?比如注册一个监听回调。

为什么强烈推荐Java程序员使用Google Guava编程

异步回调

我们可以通过guava对JDK提供的线程池进行装饰,让其具有异步回调监听功能,然后在设置监听器即可!

【编辑推荐】

  1. 浏览器扩展程序开发者对谷歌和 Mozilla 表示不满
  2. Java8之Consumer、Supplier、Predicate和Function攻略
  3. Java面试过程中10个很难回答的面试题(附答案)
  4. 微软确实在开发新系统:Windows Core OS没跑了
  5. 初级、中级和高级开发人员之间的差异
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读