Методы упомянутого вами класса были перемещены в интерфейс Stream
в пользу методов по умолчанию. Но кажется, что метод zip
удален. Возможно, потому что неясно, каково поведение по умолчанию для потоков разного размера. Но реализация желаемого поведения прямолинейна:
static <T> boolean every(
Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) {
Iterator<T> it=c2.iterator();
return c1.stream().allMatch(x->!it.hasNext()||pred.test(x, it.next()));
}
static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) {
Iterator<T> it=c2.iterator();
return c1.stream().filter(x->it.hasNext()&&pred.test(x, it.next()))
.findFirst().orElse(null);
}