那么,这里使用List的什么具体类型(子类)?有保证吗?
如果查看的文档
Collectors#toList(),它会指出-
“无法保证返回的List的类型,可变性,可序列化性或线程安全性”
。如果要返回特定的实现,则可以
Collectors#toCollection(Supplier)改用。
Supplier<List<Shape>> supplier = () -> new linkedList<Shape>();List<Shape> blue = shapes.stream() .filter(s -> s.getColor() == BLUE) .collect(Collectors.toCollection(supplier));
从lambda中,您可以返回所需的任何实现
List<Shape>。
更新 :
或者,您甚至可以使用方法参考:
List<Shape> blue = shapes.stream() .filter(s -> s.getColor() == BLUE) .collect(Collectors.toCollection(linkedList::new));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)