Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将流收集到LinkedList_Java_Java 8_Java Stream - Fatal编程技术网

Java 将流收集到LinkedList

Java 将流收集到LinkedList,java,java-8,java-stream,Java,Java 8,Java Stream,当通过列表进行流式传输时,如何将输出收集到链接列表中 我尝试了以下方法: public static void main(String[] args) { List<String> firstList = new ArrayList<>(); firstList.add("pavan"); firstList.add("kumar"); LinkedList<String> filtered= new LinkedList<

当通过
列表
进行流式传输时,如何将输出收集到链接列表中

我尝试了以下方法:

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);        
}
publicstaticvoidmain(字符串[]args){
List firstList=新建ArrayList();
第一个列表。添加(“pavan”);
第一个列表。添加(“库马尔”);
LinkedList filtered=新建LinkedList();
filtered=(LinkedList)firstList.stream().filter(t->firstList.contains(“p”).collect(Collectors.toList());
系统输出打印项次(过滤);
}
但是这是给java.util.ArrayList不能强制转换为java.util.LinkedList。
collect(Collectors.toList())
返回一个
列表。您不能假设它将返回哪个
列表
实现

使用
Collectors.toCollection()
,指定要将数据收集到的实际
收集
(在您的情况下为
列表
)实现:

LinkedList<String> filtered =
    firstList.stream()
             .filter(t->firstList.contains("p"))
             .collect(Collectors.toCollection(LinkedList::new));
LinkedList已筛选=
firstList.stream()
.filter(t->firstList.contains(“p”))
.collect(Collectors.toCollection(LinkedList::new));
使用构造函数

 filtered = new LinkedList<String>(firstList.stream().filter(t->firstList.contains("p")).collect(Collectors.toList());
filtered=newlinkedlist(firstList.stream().filter(t->firstList.contains(“p”)).collect(Collectors.toList());

链表构造函数将
Collection
作为参数,因此来自
asList()的任何返回
将兼容

是否有特殊原因需要
LinkedList
并且不能针对
列表
接口进行编码?我想使用LinkedListOkay实现的Deque接口方法,然后最好针对接口进行编码,并将变量声明为
Deque
。这是怎么回事@MickMnem这样做会使以后切换到另一个实现(例如,
ArrayDeque
concurrentlinkedeque
LinkedBlockingDeque
)变得更简单。一般来说,这是一个好主意的更多原因,请参阅本文:使用
.collector(collector.toCollection(LinkedList::new))
更有效。如果使用复制构造函数,将创建两个列表。