Java stream.toArray能否保证始终按ArrayList顺序提供?

Java stream.toArray能否保证始终按ArrayList顺序提供?,java,java-stream,Java,Java Stream,我想知道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&q

我想知道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);
List List=new ArrayList();
列表。添加(“大括号打开”);
列表。添加(“我是一个男孩”);
列表。添加(“或”);
添加(“她是一名教师”);
列表。添加(“大括号关闭”);
列表。添加(“和”);
列表。添加(“人类类型”);
字符串[]数组=list.stream().toArray(字符串[]:::新建);
数组=[“大括号打开”、“我是男孩”、“或”、“她是老师”、“大括号关闭”、“和”、“人是类型”]

我能一直期待有序的结果吗?

猜猜答案是否清楚地解释了这一点

流可能有也可能没有定义的遭遇顺序。流是否具有遭遇顺序取决于源和中间操作。某些流源(如列表或数组)本质上是有序的,而其他流源(如HashSet)则不是

如果在哈希集上调用stream(),则流将无序,而在列表上调用stream()将返回有序流

请注意,您可以调用unordered()来释放订购契约并可能提高性能。一旦流没有排序,就无法重新建立排序。(将无序流转换为有序流的唯一方法是调用sorted,但是,生成的顺序不一定是原始顺序)

另请参阅java.util.stream包文档的“排序”部分
它说:“某些流源(如列表或数组)本质上是有序的,而其他流源(如HashSet)则不是。”

是的,因为它是来自列表的流……如果流的集合保持顺序,流将保持其顺序这是否回答了您的问题?所以stream()函数不能完全保证顺序吗?它只是从使用stream添加的列表更改为数组,然后更改list.toArray(新字符串[list.size()])的区别;和list.stream().toArray(字符串[]:::新建)?两种结果总是按顺序不同吗?