我希望了解在Java 8流API中使用Stack类的行为。
Stack<Integer> s = new Stack<>();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.stream().forEach( x-> System.out.print(x + " "));
根据 Stack 类的合同,这段代码应该打印出 4 3 2 1
。
但实际上,它打印出了 1 2 3 4
。
基本上我想要了解:
导致这种行为的底层低级实现细节。
在使用 Stream API 迭代有序集合时,是否还存在其他已知的问题。
如果我想要实现自己的 Stack 类,并与 Java 8 Streams 兼容,需要做哪些更改?
4 3 2 1
?请引用文档。" b) 文档明确指出:“Deque接口及其实现应优先使用,而不是使用此类。”- 为什么您要使用过时的类? - Erwin BolwidtelementData[cursor++]
,其中elementData
是一个普通的Object[]
数组,由两个类用于存储元素。 - Andrew Tobilko