java8 guava

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

java8 guava

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

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

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

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

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

  3. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!

    写在前面 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API(java.util.stream.*)  ,那什么是Stream API呢?Java8中 ...

  4. java8 nullpoint_仅当在Java8中使用lambda时不为null时才过滤值

    我有一个对象列表说汽车.我想基于使用Java 8的一些参数来过滤此列表.但是如果参数为null,则抛出NullPointerException.如何过滤掉空值? 目前的代码如下 requiredCar ...

  5. java8 新特性 ibm_【Java8新特性】Streams(流)

    Java 8 引入了Stream(流式操作),你可以通过该操作实现对集合的并行处理和函数式操作.Collection是一种静态的内存数据结构,而Stream是面向计算的. Stream是Java 8中 ...

  6. 【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!

    写在前面 Java8之前的日期和时间API,存在一些问题,比如:线程安全的问题,跨年的问题等等.这些问题都在Hava8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大.立志 ...

  7. java8 joda_Joda Time项目和java8时间api

    Joda Time出现的背景 在java1.0中,对日期和时间的支持只能依赖java.util.Date类.正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间.更糟糕的是它的易用性,由于某 ...

  8. java8 minecraft_我的世界java8对minecraft的影响

    我的世界java8对minecraft的影响,最近大家都在担心如果我将自己的的java更新到了8后,对我的minecraft会有影响,对于这个问题官方Dinnerbone给出了解答,我们来看看. Na ...

  9. java8类型推导,鲜为人知的Java8特性:泛化目标类型推断

    本文由 ImportNew - 彭秦进 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 J ...

最新文章

  1. VS+VA 开发NDK
  2. Java 基本数据类型
  3. Centos 7.4 安装ipython和mysql-python遇到的问题
  4. Hibernate查询
  5. VSCode 竟然可以无缝调试浏览器了!
  6. 计算机专业可以评机械工程师,机械工程师个人评价
  7. MyBatis基础知识概述
  8. elasticsearch同义词配置elasticsearch-analysis-dynamic-synonym
  9. linux opera java,Ubuntu Linux下的 Opera 安装
  10. 爱看小说网源码全站带数据打包ThinkPHP内核小说网站源码
  11. android 开发者模式 手机变慢,手机太卡?手机中的“开发者模式”你会用吗?试一下,瞬间流畅!...
  12. MySQL数据库与JDBC编程
  13. Mac下添加Chrome插件
  14. 关于mysql的行转列问题
  15. aliPay支付宝APP支付操作流程
  16. 中企海外周报 | 银联业务拓展到171个国家和地区;徐工集团向非洲客户提供定制化设备...
  17. 如何将计算机桌面屏幕放大,电脑桌面内容放大怎么缩小
  18. MYSQL安装和初始化配置
  19. Python中的布尔类型
  20. 开源一个安信可A9g小项目微信小程序定位器项目②GPS模块如何定位经纬度并且上报到MQTT服务器,实现远程查看模块的经纬度;

热门文章

  1. 洛谷P4389:付公主的背包(多项式、生成函数)
  2. AT2164-[AGC006C]Rabbit Exercise【差分,倍增,数学期望】
  3. P3313-[SDOI2014]旅行【树链剖分,线段树】
  4. CF438D-The Child and Sequence【线段树】
  5. nssl1249-C【数论】
  6. ssl1761-城市问题【图论,最短路,Dijkstra】
  7. POJ - 3415 Common Substrings(长度不小于K的公共子串个数)
  8. 深入理解Java ClassLoader及在 JavaAgent 中的应用
  9. 深入浅出讲解语言模型
  10. Java工程师必备技能