在通过 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。
LinkedList
,而不能使用List
接口编码,是否有特殊原因? - Mick MnemonicArrayDeque
,ConcurrentLinkedDeque
,LinkedBlockingDeque
)更加简单。在此 post 中,还有更多为什么这是一个好主意的原因:什么是“面向接口编程”? - Mick MnemonicDeque<String> filtered=firstList.stream() .filter(t -> t.contains("p")) .collect(Collectors.toCollection(ArrayDeque::new));
。请注意,我将LinkedList
替换为ArrayDeque
,因为即使您需要一个Deque
,也没有真正使用LinkedList
的用例。此外,我将您的过滤表达式替换为更符合您意图的内容。 - Holger