通过List
进行流式传输时,如何将输出收集到链接列表?
我尝试了以下内容:
public static void main(String[] args) {
List<String> firstList = new ArrayList<>();
firstList.add("pavan");
firstList.add("kumar");
LinkedList<String> filtered= new LinkedList<>();
filtered = (LinkedList<String>) firstList.stream().filter(t->firstList.contains("p")).collect(Collectors.toList());
System.out.println(filtered);
}
但这是给予 java.util.ArrayList无法强制转换为java.util.LinkedList。
答案 0 :(得分:7)
collect(Collectors.toList())
返回List
。您无法假设它将返回哪个List
实现。
使用Collectors.toCollection()
,指定您希望将数据收集到的实际Collection
(或您的List
)实现:
LinkedList<String> filtered =
firstList.stream()
.filter(t->firstList.contains("p"))
.collect(Collectors.toCollection(LinkedList::new));
答案 1 :(得分:-1)
使用构造函数
filtered = new LinkedList<String>(firstList.stream().filter(t->firstList.contains("p")).collect(Collectors.toList());
链接列表构造函数将Collection
作为参数,因此asList()
的任何返回都是兼容的