Java 如何从arrayList中删除唯一元素
我有两个列表,其中一个列表的值是1,2,3 另一份清单2,3 我想删除两个列表中不匹配的值 2和3在两个列表中都匹配,那么1在两个列表中都不匹配,所以我想删除该值Java 如何从arrayList中删除唯一元素,java,collections,Java,Collections,我有两个列表,其中一个列表的值是1,2,3 另一份清单2,3 我想删除两个列表中不匹配的值 2和3在两个列表中都匹配,那么1在两个列表中都不匹配,所以我想删除该值 List original = [1,2,3]; List dummy = [2,3]; 如果可以改为使用集合,则只需获得集合之间的交集(): 设置s1; 设s2; s1.保留(s2);//s1现在只包含两个集合中的元素 当然,对于集合,您不能有重复项,并且您将失去顺序。如果可以使用集合代替,那么您只需获得集合之间的交集():
List original = [1,2,3];
List dummy = [2,3];
如果可以改为使用集合,则只需获得集合之间的交集():
设置s1;
设s2;
s1.保留(s2);//s1现在只包含两个集合中的元素
当然,对于集合,您不能有重复项,并且您将失去顺序。如果可以使用集合代替,那么您只需获得集合之间的交集():
设置s1;
设s2;
s1.保留(s2);//s1现在只包含两个集合中的元素
当然,对于集合,您不能有重复项,并且您将失去顺序。如果您使用的是Java 8+,您可以使用:
original.removeIf(a -> !dummy.contains(a));
下面是一个Java10的示例
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]
var original=newarraylist(1,2,3,4的列表);
var dummy=新的ArrayList(列表(2,4,3));
original.removeIf(a->!dummy.contains(a));
系统输出打印号(原件);
->[2, 3, 4]
如果您使用的是Java 8+,则可以使用:
original.removeIf(a -> !dummy.contains(a));
下面是一个Java10的示例
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]
var original=newarraylist(1,2,3,4的列表);
var dummy=新的ArrayList(列表(2,4,3));
original.removeIf(a->!dummy.contains(a));
系统输出打印号(原件);
->[2, 3, 4]
您不需要使用集合来实现您的需求。
使用集合
中定义的任何列表
实现实现的retainal()
,例如:
List<Integer> original = new ArrayList<>(Arrays.asList(1,2,3));
List<Integer> dummy = Arrays.asList(2,3);
original.retainAll(dummy);
System.out.println(original);
List original=newarraylist(Arrays.asList(1,2,3));
List dummy=Arrays.asList(2,3);
原始。保留(虚拟);
系统输出打印号(原件);
输出:
[2,3]
您不需要使用集合来实现您的需求。
使用集合
中定义的任何列表
实现实现的retainal()
,例如:
List<Integer> original = new ArrayList<>(Arrays.asList(1,2,3));
List<Integer> dummy = Arrays.asList(2,3);
original.retainAll(dummy);
System.out.println(original);
List original=newarraylist(Arrays.asList(1,2,3));
List dummy=Arrays.asList(2,3);
原始。保留(虚拟);
系统输出打印号(原件);
输出:
[2,3]
如果dummy
的值不在original
中,该怎么办?你也想得到这些吗?到目前为止你尝试了什么?如果dummy
的值不在original
中怎么办?你也想得到这些吗?到目前为止你尝试了什么?一个LinkedHashSet
甚至可以维持插入顺序。而且复制品似乎没有被构思出来。因此,这确实是一个很好的解决方案。这个答案改变了需求(如果两个列表包含1
,则不会要求我们只有一个1作为结果),它还改变了元素顺序。问题是“我想删除两个列表中不匹配的值”。@davidxxx在回答中已经明确说明了这一点,但感谢您强调,gaLinkedHashSet
甚至可以保持插入顺序。而且复制品似乎没有被构思出来。因此,这确实是一个很好的解决方案。这个答案改变了需求(如果两个列表包含1
,则不会要求我们只有一个1作为结果),它还改变了元素顺序。问题是“我想删除两个列表中不匹配的值”。@davidxxx这一点在答案中已经明确说明,但感谢您的强调