【发布时间】:2014-03-21 15:53:29
【问题描述】:
我正在阅读State of the Lambda: Libraries Edition,并且对一个声明感到惊讶:
在 Streams 部分下,有以下内容:
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toList());
文档没有说明shapes 究竟是什么,我也不知道它是否重要。
让我困惑的是:这段代码返回了什么样的具体List?
- 它将变量分配给
List<Shape>,这完全没问题。 -
stream()或filter()决定使用哪种列表。 -
Collectors.toList()没有指定List的具体类型。
那么,这里使用了List 的具体 类型(子类)吗?有保证吗?
【问题讨论】:
-
由于
toUnmodifiableList()方法是在Java 10中加入的,看来toList()的可变性现在可以得到保证了。
标签: java list lambda java-8 collectors