在这篇文章中,我们将演示如何在列表中查找重复元素。 以下是一些例子。
示例#1
我们将使用Set集合来识别副本,因为Set是不同元素的无序列表。 如果Set的add()方法返回false,则表示列表中已存在一个元素。
文件:DuplicateInArrayExample1.java -
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateInArrayExample1 {
public static void main(String[] args) {
List elements=new ArrayList<>();
elements.add("One");
elements.add("Three");
elements.add("Two");
elements.add("Three"); /*Duplicate Element*/
elements.add("Four");
elements.add("Five");
elements.add("Four"); /*Duplicate Element*/
System.out.println("Elements : "+elements);
Set set=new HashSet<>();
Set duplicateElements=new HashSet<>();
for (String element : elements) {
if(!set.add(element)){
duplicateElements.add(element);
}
}
System.out.println("Duplicate Elements : "+duplicateElements);
}
}
执行上面示例代码,得到以下结果 -
Elements : [One Three Two Three Four Five Four]
Duplicate Elements : [Four Three]
示例#2
在这个方法中,我们将首先使用Collections.sort()方法对列表元素进行排序,然后在单个循环中比较相邻元素。参考以下示例代码 -
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateInArrayExample2 {
public static void main(String[] args) {
List elements=new ArrayList<>();
elements.add("One");
elements.add("Three");
elements.add("Two");
elements.add("Three"); /*Duplicate Element*/
elements.add("Four");
elements.add("Five");
elements.add("Four"); /*Duplicate Element*/
System.out.println("Elements : "+elements);
Set duplicateElements=new HashSet<>();
Collections.sort(elements);
for (int i = 1; i < elements.size(); i++) {
if(elements.get(i-1).equals(elements.get(i))){
duplicateElements.add(elements.get(i));
}
}
System.out.println("Duplicate Elements : "+duplicateElements);
}
}
执行上面示例代码,得到以下结果 -
Elements : [One Three Two Three Four Five Four]
Duplicate Elements : [Four Three]