当前位置: 首页 > 知识库问答 >
问题:

通过使用java stream[duplicate]成对应用一个操作来连接两个列表

江永安
2023-03-14

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

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(),因此第二个流中的过滤器将过滤任何内容。

共有1个答案

戴高远
2023-03-14
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.Collection()将其存储在新的列表中。

如果您确定这两个范围的大小相同,则可以将范围简化为.range(0,L1.size())

 类似资料:
  • 问题内容: 给定以字典为元素的列表,我想产生一个新列表,其中包含一组连接的字典。每个字典都保证有一个称为“索引”的键,但除此之外可以有任意键集。非索引键永远不会在列表之间重叠。例如,想象以下两个列表: (永远不会出现在中,因为它出现在中,并且类似地,永远不会出现在中,因为它出现在中) 我想产生一个联合列表: 在Python中最有效的方法是什么? 问题答案: 编辑 :由于不能保证被排序(不按特定顺序

  • 我有两个工作(工作1,工作2)工作2取决于工作1的结果,所以它必须等到工作1完成 我需要用链子把它们锁起来: 谢谢你。

  • 我有两个非常大的系列,只包含连接键。在不使用索引的情况下(在本例中没有意义),我希望以最有效的方式通过值将一个系列左键连接到另一个系列。 现在,我添加了一列1,这样我就可以使用和一个左连接,这样我就可以确定中的每个键是否也存在于Right中。 我确信我可以在不创建两个未使用的列的情况下完成这项工作,但是似乎希望为联接使用索引。有没有办法让两个系列的值保持不变?有没有更快的numpy版本? 例如:

  • 我正在尝试使用Apache Flink流API加入两个流,但没有任何内容加入,并且在阅读文档后我不知道我做错了什么 关键功能是

  • 下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和