Java8很棒,并向JDK添加了一些有用的抽象,这些抽象通过Google出色的Guava commons库在Java社区中得到了普及。 小组讨论表明, 不久将有一个需要Java 8的Guava版本,从而弥合了Guava和Java8之间的鸿沟。 但是,直到这样的时候,我们其余使用Guava + Java8的人都需要一个很小的填充库来处理诸如Collector实现之类的东西,这些东西会产生Guava Immutable集合。

与往常一样, 斯蒂芬· 科尔本( Stephen Colebourne)恰好把这样一个很小的实用程序类放在一起 : 不幸的是,它被埋在Strata内部,对于我所有的项目,我都不想仅仅依靠Strata来达到这一小巧的目的。 另外,我本人也有一些Java8填充方法可以使用家。 因此, 我分叉了Colebourne的Guavate,并将其发布给Maven Central,供其他任何想要将此小巧的填充库添加到其Java8项目中的人使用:

<dependency><groupId>com.github.steveash.guavate</groupId><artifactId>guavate</artifactId><version>1.0.0</version>
</dependency>

每个不可变集合都有收集器实现:

List<String> inputs = Lists.newArrayList("a", "b", "c");
ImmutableSet<String> outputs = inputs.stream().map(String::toUpperCase).filter(it -> !it.startsWith("b")).collect(Guavate.toImmutableSet());
// outputs is an immutable set of "a" and "c"

还有一些方便的方法可以从Map.Entry(以及实现了Entry的Common-Lang3的Pair)中收集地图:

Map<String, Integer> inputs = ImmutableMap.of("bob", 1, "jon", 2, "mary", 3
);
Map<String,Integer> outputs = inputs.entrySet().stream().map(e -> Pair.of(e.getKey().toUpperCase(), e.getValue())).collect(Guavate.entriesToMap());
// outputs is a map of BOB:1, JON:2, MARY:3

将任意可迭代对象转换为流(首先应该在JDK中):

Iterable<String> values = // ...
Stream<String> streamVals = Guavate.stream(values);

并将Optional转换为零或一个元素的流:

Optional<String> maybe = // ...
Stream<String> stream = Guavate.stream(maybe);

检出GitHub项目页面以跟踪更新或提交带有您自己的Java8附加件的拉取请求:

  • https://github.com/steveash/guavate

翻译自: https://www.javacodegeeks.com/2016/07/guavate-tiny-library-bridging-guava-java8.html

Guavate:桥接Guava和Java8的微型库相关推荐

  1. java8 guava_Guavate:桥接Guava和Java8的微型库

    java8 guava Java8很棒,并向JDK添加了一些有用的抽象,这些抽象通过Google出色的Guava commons库在Java社区中得到了普及. 小组讨论表明, 不久将有一个需要Java ...

  2. 小微型库(1.获取元素的API)

    参考JQ,利用原生js做一个简单的微型库,有以下一些功能: 可进行链式操作 元素的获取的API id class tag标签名 css选择器 事件的处理 事件的绑定兼容 解绑事件的兼容 typeOf ...

  3. Java8时间日期库DateTime API及示例

    背景 Java对日期,日历及时间的处理一直以来都饱受诟病,比如java.util.Date和java.util.Calendar类易用性差,不支持时区,非线程安全;还有用于格式化日期的类DateFor ...

  4. 24 个你应该了解的 PHP 库

    24 个你应该了解的 PHP 库 2015-09-08    分类:WEB开发.编程开发.首页精华暂无人评论     来源:伯乐在线 分享到:更多3 二十万年薪PHP工程师培养计划 成为被疯抢的And ...

  5. PHP开发者应了解的24个库

    作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是我曾经遇到过最酷的24个库.你最喜欢的库没有在这个列表里面?那就在评论中分 ...

  6. 参考: 40个轻量级 JavaScript 库

    流行的 JavaScript 库不胜枚举,jQuery, MooTools, Prototype, Dojo, YUI.这些 JavaScript 库功能丰富,加上它们的插件,几乎能胜任任何工作,然而 ...

  7. cesium雷达图_20个简化开发任务的 JavaScript库

    所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的 JavaScript代码集.JavaScript主要用于写内嵌于H ...

  8. 20个优秀的JavaScript 键盘事件处理库

    键盘事件是 Web 开发中最常用的事件之一,通过对键盘事件的捕获和处理可以提高网站的易用性和交互体验.下面,我们向大家介绍收集的20款优秀的 JavaScript 键盘事件处理库,帮助开发人员轻松处理 ...

  9. 推荐15个 JavaScript 和 CSS 库

    Tutorialzine的使命是让开发者与最新的Web开发发展同步.因此,我们每月都会精选一批最优秀的资源推荐给大家,相信这些资源你绝对值得拥有! ClarifyJS ClarifyJS可以让你串联一 ...

最新文章

  1. 正则表达式引擎执行原理——从未如此清晰!
  2. js 查错_7年前端开发经验的我,写了本Vue.js实战开发,开源高清PDF下载
  3. 上海纳税百强2016,邢台2017纳税百强,深圳百强企业
  4. 简而言之SPIFFE
  5. Android开发之自定义的ProgressDialog
  6. 一文读懂GaussDB(openGauss) 的六大关键技术特性
  7. Liferay7 BPM门户开发之24: Liferay7应用程序安全
  8. java多张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程
  9. latex table 表格 显示每行横线
  10. oracle blob 转 varchar2,oracle varchar2与clob、blob互转
  11. 2019中兴捧月·初赛心得
  12. 查看详细Windows VISTA 或Windows 7激活状态
  13. android studio anr,Android ANR 分析
  14. 微信小程序中的wx.navigateTo跳转路径写法
  15. UCenter 通信
  16. 【关于为什么要刷力扣的思考】记第二次周赛AK
  17. python 页眉页脚_python自动化办公:玩转word之页眉页脚秘笈-阿里云开发者社区
  18. 线上引流压测工具Meteor
  19. 在Unity中模仿游戏《江南百景图》中物体的出现效果
  20. 第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂)

热门文章

  1. JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser
  2. 内存不足The following exception is caused by a lack of memory or swap, or not having swap
  3. 【git】如何在github上推送并部署自己的项目
  4. 几天没写代码,就……
  5. springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
  6. docker 安装redis 挂载到宿主机
  7. 19年8月 字母哥 第一章 spring boot 2.x基础及概念入门 这里全部看完了 热部署没出来 第二章在前面2页 用热点公司网不行
  8. Linux 临时表空间满了,Temporary表空间100%解决方案
  9. php中时间轴,PHP时间轴函数
  10. (转)Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean