java - 通过使用 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()
使得第二个流中的过滤器过滤任何内容。
解决方案
您可以使用 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());
}
推荐阅读
- reactjs - 如何在 react-bootstrap 组件中使用“as”道具(elementType)?
- cakephp - 如何在具有ID的表和使用相同ID但两次的另一个表之间进行关联
- python - 使用 Matplotlib 进行实时绘图。X 轴被覆盖
- flutter - “int”类型不是“函数结果”的“double”类型的子类型
- laravel - 用户进度分析 laravel
- php - PHP如何将数字数组转换为...数字字符串?
- autodesk-forge - 如何在查看器中使用 Autodesk.Viewing.MarkupsCore 扩展以便我可以在其上绘图?
- drake - 从刚体工厂切换到多体工厂
- node.js - 上传功能在本地工作,但在部署到 Firebase 后失败
- python - bs4 再次从网站保存到文本文件