首页 > 解决方案 > java: 使用 stream.forEach() 或 stream.forEachOrdered() 将东西放入集合

问题描述

如果我想使用 stream().forEach(e->{set.add(e)} 将流中的元素添加到集合中,会有什么问题吗?或者我应该使用 forEachOrdered() 谢谢。

标签: javajava-stream

解决方案


当您使用 aset时,使用forEachorforEachOrdered无论如何都无关紧要。

根据 JournalDev JournalDev

“Java Set 不是一个有序集合,它的元素没有特定的顺序。Java Set 不提供对可以插入元素的位置的控制。您不能通过索引访问元素,也不能在列表中搜索元素。”

如果您使用的是列表,那么情况会有所不同,具体取决于以下几点:

  1. 如果您正在使用streams不是 parallel streams,最终结果仍然是相同的。
  2. 如果您使用并行流,如果您使用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

推荐阅读