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