如何从arrayList中删除唯一元素

时间:2018-05-26 09:51:44

标签: java collections

我有两个列表,一个列表中的值是1,2,3

另一个清单2,3

我想删除两个列表中不匹配的值。

2和3在两个列表中都匹配,然后在两个列表中都没有匹配,所以我想删除该值。

List original = [1,2,3];

List dummy = [2,3];

3 个答案:

答案 0 :(得分:3)

如果可以使用集合,那么你可以只获得集合之间的交集(info):

Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

当然,套装不能重复,您将失去订购。

答案 1 :(得分:1)

您不需要使用Set来满足您的要求 使用retainAll()中定义的任何Collection实现实现的List,例如:

List<Integer> original = new ArrayList<>(Arrays.asList(1,2,3));
List<Integer> dummy = Arrays.asList(2,3);

original.retainAll(dummy);
System.out.println(original);

输出:

  

[2,3]

答案 2 :(得分:0)

如果您使用的是Java 8+,则可以使用:

original.removeIf(a -> !dummy.contains(a));

以下是Java 10的示例

var original = new ArrayList<>(List.of(1, 2, 3, 4));
var dummy = new ArrayList<>(List.of(2, 4, 3));

original.removeIf(a -> !dummy.contains(a));

System.out.println(original);
->[2, 3, 4]