通过使用Java流成对应用操作来串联两个列表

TonyRomero:

我有两个布尔值列表,我需要通过对具有相同索引的元素应用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()因此第二个流中的过滤器将过滤任何内容。

Harshal Parekh:
List<Boolean> l1 = new ArrayList<>(Arrays.asList(true, false, true));
List<Boolean> l2 = new ArrayList<>(Arrays.asList(false, true, true));

List<Boolean> l3 = IntStream.range(0, min(l1.size(), l2.size()))
                            .mapToObj(i -> l1.get(i)&&l2.get(i))
                            .collect(Collectors.toList());

// [false, false, true]

您可以使用IntStream.range()一次遍历两个列表,并将.mapToObj()转换&&Boolean并将.collect()其存储在新列表中List

您可以将范围简化为:.range(0, l1.size())如果您确定它们的大小相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章