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))
更有效。如果使用复制构造函数,将创建两个列表。