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