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

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://www.javacodegeeks.com/2016/07/guavate-tiny-library-bridging-guava-java8.html

java8 guava

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值