首页 > 解决方案 > 通过使用 java 流成对应用操作来连接两个列表

问题描述

我有两个布尔值列表,我需要通过对具有相同索引的元素应用 AND 操作来连接它们,我期望得到一个布尔值列表,其中包含成对执行操作的结果。

public List<Boolean> concatenate(List<Boolean> l1, List<Boolean> l2) {

    return l1.stream()
                .flatMap(e1 -> l2.stream()
                                .filter(e2-> l1.indexOf(e1) == l2.indexOf(e2))
                                .map(e2-> e1&&e2))
                .collect(Collectors.toList());
}

结果列表的大小将l1.size()*l2.size()使得第二个流中的过滤器过滤任何内容。

标签: javafilterjava-streamconcatenation

解决方案


您可以使用 com.google.guava 库(版本 21 及更高版本)轻松完成

public List<Boolean> concatenate(List<Boolean> firstList, List<Boolean> secondList) {
        return Streams.zip(firstList.stream(), secondList.stream(), (a, b) -> (a && b))
                .collect(Collectors.toList());
    }

推荐阅读