java - java: 使用 stream.forEach() 或 stream.forEachOrdered() 将东西放入集合
问题描述
如果我想使用 stream().forEach(e->{set.add(e)} 将流中的元素添加到集合中,会有什么问题吗?或者我应该使用 forEachOrdered() 谢谢。
解决方案
当您使用 aset
时,使用forEach
orforEachOrdered
无论如何都无关紧要。
根据 JournalDev JournalDev:
“Java Set 不是一个有序集合,它的元素没有特定的顺序。Java Set 不提供对可以插入元素的位置的控制。您不能通过索引访问元素,也不能在列表中搜索元素。”
如果您使用的是列表,那么情况会有所不同,具体取决于以下几点:
- 如果您正在使用
streams
而不是parallel streams
,最终结果仍然是相同的。 - 如果您使用并行流,如果您使用
parallel streams
而不是streams
.
考虑以下示例:
List<Integer> list = Arrays.asList(2, 4, 6, 8, 10);
System.out.println("forEach");
list.stream().parallel().forEach( System.out::println );
System.out.println();
System.out.println("forEachOrdered");
list.stream().parallel().forEachOrdered( System.out::println );
输出可以是:
forEach
6
10
8
4
2
forEachOrdered
2
4
6
8
10
推荐阅读
- r - 在R中生成相同颜色的不同阴影
- azure - Azure 无法在资源组中创建任何资源
- java - 数据库从oracle转mysql后,liquibase校验和错误
- javascript - vscode 美化删除自定义空间格式
- hadoop - 大量单元格时停止扫描仪超时
- android - Android WebView navigator.getCurrentPosition 问题
- java - 如何通过 JavaFX 中的 RadioButtons 对最大可选复选框施加约束?
- java - 如何使用 JSoup 进行分页
- css - 在 react-bootstrap 中更改 NavDropdown 的颜色和背景颜色
- php - 如何使用 vfsStream 模拟图像和其他文件格式?