stream.toarray是否可以保证始终按arraylist顺序排列?

pb3skfrl  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(361)

这个问题在这里已经有答案了

java流处理顺序(2个答案)
26天前关门了。
我想知道stream()。toarray函数是否总是保证顺序。

List<String> list = new ArrayList<String>();
list.add("brace open");
list.add("I am a boy");
list.add("or");
list.add("she is a teacher");
list.add("brace close");
list.add("and");
list.add("human is type");
String[] array = list.stream().toArray(String[]::new);

array=[“brace open”,“我是男孩”,“or”,“她是老师”,“brace close”,“and”,“human is type”];
我能一直期待有序的结果吗?

dfuffjeb

dfuffjeb1#

如果对哈希集调用stream(),则流将是无序的,而对列表调用stream()将返回有序流。
请注意,您可以调用unordered()来释放订购契约并可能提高性能。一旦流没有排序,就无法重新建立排序(将无序流转换为有序流的唯一方法是调用sorted,但是,生成的顺序不一定是原始顺序)。
另请参见java.util.stream包文档的“排序”部分https://docs.oracle.com/javase/8/docs/api/?java/util/stream/package-html它说:“某些流源(如列表或数组)本质上是有序的,而其他流源(如hashset)则不是。”

bq9c1y66

bq9c1y662#

我猜javadocs解释得很清楚,
流可能有也可能没有定义的相遇顺序。流是否具有相遇顺序取决于源和中间操作。某些流源(如列表或数组)本质上是有序的,而其他流源(如hashset)则不是。

相关问题