![](/img/trans.png)
[英]Find element matching in 2 lists using java 8 stream and updating one list value from the other
[英]Java Stream : Create new List from 2 Lists keeping only matching values
我正在使用Java流,但遇到了问题。 我有一个像这样的列表:
[1,2,3,4,5]
另一个像:
[1,3,5,7,9]
我的问题是如何创建一个新列表,如:
[1,3,5]
谢谢。
比在这里使用流更简单的方法:
List<Integer> newList = new ArrayList<>(list1);
newList.retainAll(list2);
但是,正如@Holger指出的那样,如果列表很大,则此解决方案可能效率不高,因此请尝试:
newList.retainAll(new HashSet<>(list2));
您在评论中有一个流式答案。
您还可以利用retainAll
方法来实现这一点。
ArrayList<Integer> newArr = new ArrayList<>(arr); //Create a new List based off the first list
newArr.retainAll(arr2); //Retain only the elements in the first list and second list
在此示例中, newArr
将为[1,3,5]
如果您有清单
List l1 = ..., List l2 = ...
你可以做:
List result = l1.stream().filter(x -> l2.contains(x)).collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.