【发布时间】:2019-10-06 00:39:04
【问题描述】:
我了解到collect() 和forEach() 都是流终端操作,在同一个流上调用它们会抛出IllegalStateException。但是,以下代码编译成功,并按升序打印每个 String 的长度。不抛出异常。怎么会这样?
List<String> list = Arrays.asList("ant", "bird", "chimpanzee", "dolphin");
list.stream().collect(Collectors.groupingBy(String::length))
.forEach((a, b) -> System.out.println(a));
【问题讨论】:
-
为什么你认为你在原始Stream上调用
foreach而不是collect返回的对象?如果collect不返回任何内容,它还应该如何工作?
标签: java java-stream illegalstateexception