将流收集到LinkedList

时间:2016-07-18 09:56:04

标签: 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);        
}

但这是给予 java.util.ArrayList无法强制转换为java.util.LinkedList。

2 个答案:

答案 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()的任何返回都是兼容的