Java 基于先前值生成值的函数构造

Java 基于先前值生成值的函数构造,java,groovy,functional-programming,generator,Java,Groovy,Functional Programming,Generator,假设我们有以下命令片段: List list = new ArrayList() var x = doSomething(arg1, ..., argN) list.add(x) do { x = doSomething(arg1, x.prop1, ..., x.propM, argN) list.add(x) while (x.propK == <something>) 应产生: ["12345", "2345", "345", "45", "5"] 你能给出一个输入

假设我们有以下命令片段:

List list = new ArrayList()
var x = doSomething(arg1, ..., argN)
list.add(x)
do {
  x = doSomething(arg1, x.prop1, ..., x.propM, argN)
  list.add(x)
while (x.propK == <something>)
应产生:

["12345", "2345", "345", "45", "5"]

你能给出一个输入和预期输出的例子吗?你可以看看
java.util.stream.Collectors
类,并在一个类似
someCollection.stream()…collect(Collectors…)
的结构中使用它的方法,如果你知道如何使用java8和它,为什么不这样做呢?groovy和java8混合得很好。@cfrick并不是说不能通过do while实现,而是我更喜欢学习更多的函数构造,而不是通过编写自己的实现(在生产代码中)来重新发明轮子。我目前正潜入groovy,这是一个偶然的机会,所以本质上,我正在寻找一种更不依赖语言的方法,例如,在Scala中可以重用
generate({ "12345" }, { String s -> s.substring(1) }, { String s -> s.isEmpty })
["12345", "2345", "345", "45", "5"]