将流收集到LinkedList

ppp*_*van 2 java java-8 java-stream

流式传输时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);        
}
Run Code Online (Sandbox Code Playgroud)

这是让java.util.ArrayList无法强制转换为java.util.LinkedList.

Era*_*ran 8

collect(Collectors.toList())返回一个List.您无法假设List它将返回哪个实现.

使用Collectors.toCollection(),指定您希望将数据收集到的实际Collection(或List在您的情况下)实现:

LinkedList<String> filtered =
    firstList.stream()
             .filter(t->firstList.contains("p"))
             .collect(Collectors.toCollection(LinkedList::new));
Run Code Online (Sandbox Code Playgroud)