为了尝试举一个例子,让我们考虑以下内容
Consumer(注意:这种功能的有用性在这里并不重要):
public static class StatefulConsumer implements IntConsumer { private static final Integer ARBITRARY_THRESHOLD = 10; private boolean flag = false; private final List<Integer> list = new ArrayList<>(); @Override public void accept(int value) { if(flag){ // exit condition return; } if(value >= ARBITRARY_THRESHOLD){ flag = true; } list.add(value); }}它是一个将向其中添加项目的消费者
List(让我们既不考虑如何获取列表又不考虑线程安全性),并具有一个标志(表示状态)。
其背后的逻辑是,一旦达到阈值,消费者应停止添加商品。
您的书试图说的是,因为没有确定的顺序,函数将必须使用的元素
Stream,因此输出是不确定的。
因此,它们建议您仅使用无状态函数,这意味着它们将始终在相同的输入下产生相同的结果。



