我可以使用什么流方式?

g9icjywg  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(273)

我在下面工作过

String[] params = new String[]{"there", "are", "many", "people", "in", "the", "park"};
List<String> list = new ArrayList<String>();

Case 1.
Arrays.stream(params).forEach(param -> { 
     list.add(param);
     list.add("A");
});
1. list = ["there", "A", "are", "A", "many", "A", "people", "A", "in", "A", "the", "A", "park", "A"]?
2. list = ["there", "A", "many", "A", "are", "A", "A","the", "A", "park", "A", "people", "A",  "A", "in"]?
I have exprerinced two result   

Case 2.
IntStream.range(0, params.length).forEach(index -> {
  list.add(params[index]);
  list.add("A");
});
1. list = ["there", "A", "are", "A", "many", "A", "people", "A", "in", "A", "the", "A", "park", "A"]?
I have experienced one result
Why can be happen two case result even though it is difference stream and IntStream?

如果我希望这个结果总是[“there”,“a”,“are”,“a”,“many”,“a”,“people”,“a”,“in”,“a”,“the”,“a”,“park”,“a”],我可以使用什么函数?
arrays.stream().foreach与intstream.range().foreach之比较

c9qzyr3d

c9qzyr3d1#

(编辑)简短回答: forEach() 没有原始订单。你需要 forEachOrdered() 维护数据结构(如果存在)的相遇顺序。i、 哈希集没有遭遇顺序。
除了fluffy的答案之外,这里还有另一个stackoverflow帖子,它有助于回答您的问题。
当我不确定编程中的工作方式时,这总是我的第一步:官方文档。我正在努力学习一些语言的文档,但我个人认为javaapi参考是最好的。官方java文档在“排序”一章中解释了流的排序行为。请 checkout java文档。
最后一个建议与您的问题没有直接关系:避免lambda中的多行代码,这样您的代码就可以保持可读性。

相关问题