我有多个Integer ArrayList
,其中包含一些重复元素。我想从他们身上得到独特的元素。但如何呢?
java.util.ArrayList.removeAll()
没有完全达到我的目的。请参阅下面的测试代码-
ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);
ArrayList<Integer> e = new ArrayList<Integer>();
e.add(3);
e.add(7);
d.removeAll(e);
for (int t : d) {
System.out.print(t+", ");
}
在输出中,我得到 2, 4, 5, 8, 9,
。显然 3
丢失了。另外,为了简单起见,我在这里只使用了两个 ArrayList
,但在我的代码中,我有两个以上的 ArrayList
。
如何在 Java 中的多个 ArrayList 中找到唯一元素
最佳答案
创建 Set<Integer>
来自您的List<Integer>
。该集合将不包含重复的对象:
List<Integer> lstNumbers = new ArrayList<Integer>();
//fill the list of integers...
Set<Integer> setNumbers = new HashSet<Integer>(lstNumbers);
//the set will contain no duplicate values...
for (int t : setNumbers) {
System.out.print(t+", ");
}
请注意,您可以添加更多 List<Integer>
在 Set
通过使用Set#addAll
方法(如 rahulroc 答案中所示)在不重复的元素集合中添加更多整数:
//assuming setNumbers has been initialized before
setNumbers.addAll(anotherListOfNumbers);
setNumbers.addAll(andAnotherListOfNumbers);
此外,作为最佳实践,请尝试对接口(interface)(List、Set 等)进行编程,而不是对类实现(ArrayList、HashSet)进行编程,如下所示:What does it mean to “program to an interface”?
关于java - Java中如何查找多个ArrayList中的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777807/