使用JDK8和lambda(java.util.stream.streams.zip)对流进行函数式编程压缩
在带有lambda b93的JDK 8中,有一个类java.util.stream.Streams.zip in b93,可以用来压缩流(这在教程Exploring Java8 Lambdas. Part 1 by Dhananjay Nene中有说明)。此功能:
Creates a lazy and sequential combined Stream whose elements are the result of combining the elements of two streams.
然而,在b98中,这种情况已经消失。实际上Streams
类在java.util.stream in b98中甚至是不可访问的
此功能是否已移动,如果已移动,如何使用b98简洁地压缩流
我想到的应用程序是in this java implementation of Shen,在那里我替换了
static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
代码相当冗长的函数(不使用b98中的功能)
# 1 楼答案
您提到的类的方法已被移动到
Stream
接口本身,以支持默认方法。但是zip
方法似乎已被删除。可能是因为不清楚不同大小的流的默认行为应该是什么。但实现期望的行为是直截了当的:# 2 楼答案
使用JDK8和lambda(gist)压缩两个流
# 3 楼答案
zip是protonpack library提供的函数之一
# 4 楼答案
如果项目中有番石榴,可以使用Streams.zip方法(在Guava 21中添加):