java - Java中如何查找多个ArrayList中的唯一元素

标签 java set unique

我有多个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/

相关文章:

c++ - boost 是否具有比 STL 更简单的集合操作数据类型?

java - 有效地找到可变数量的字符串集的交集

MySQL:按特定顺序按列分组(不仅仅是 ASC 或 DESC)

php - 合并两个数组

PHP 提供闭包来确定数组中项目的唯一性

java - 这段代码来自 Java Concurrency inpractice ThreadSafe 吗?

java - 不工作 spring.config.additional-location

python - 如何在 Python 的集合列表中找到并集?

java - 将变量值从 UI 传递到操作监听器

java - @ElementCollection 是否意味着 orphanRemoval?