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