java - 如何使用 Java 8 Stream 实现 Stack Iteration

标签 java java-8 stack java-stream java-9

我有一个 Stack<Object>和下面的一段代码:

while(!stack.isEmpty()){
    Object object = stack.pop();
    // do some operation on object
}

如何使用 Java 8 Stream 实现此迭代,以便它循环直到堆栈为空,并且在每次迭代中都应通过从顶部弹出一个元素来减少堆栈?

最佳答案

在 Java 9 中,将有一个 3-arg 版本的 Stream.iterate(就像一个 for 循环——初始值,用于确定输入结束的 lambda,用于确定下一个输入的 lambda ) 可以做到这一点,尽管它会有点紧张:

if (!stack.isEmpty()) {
    Stream.iterate(stack.pop(), 
                   e -> !stack.isEmpty(), 
                   e -> stack.pop())
          ...
}

关于java - 如何使用 Java 8 Stream 实现 Stack Iteration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159906/

相关文章:

java - 检查异常规范和策略模式

java - 我无法理解 Java 8 中的一些 lambda 表达式

Java 8 CompletableFuture future 不必要地等待其他 future

c++ - 枚举指针的丢失值

java - 堆栈、括号匹配

C++ - 模板类堆栈实现中的反向函数

java - Mat 对象的数学运算 OpenCv

java - 读取 excel 文件 --> 使用 java 的 xlsx 格式

java - 使用第一个列表中的一些键以及整个第一个列表将 List<Map> 转换为其他 List<Map>

Java happens-before 关系