Zcopy.site

Java ArrayList中删除重复数据的多种方法

在本节中,我们将演示如何从ArrayList中删除重复的元素。

  • 在Java中,List是元素的顺序序列,Set是不同的元素列表序列。
  • 通过将Arraylist转换为HashSet或LinkedHashSet,可以从列表中删除重复的元素。

以下是一些例子 -

文件:RemoveDuplicateFromList1.java -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package site.zcopy.blog;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicateFromList1 {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("One");
list.add("Two");
list.add("Three");
list.add("Three"); /* Duplicate Entry*/
list.add("Four");
list.add("Five");
list.add("Six");
list.add("Six"); /* Duplicate Entry*/

System.out.println("Before : "+list);
Set<String> set=new HashSet<>();

for (String string : list) {
set.add(string);
}
System.out.println("After : "+set);
}
}

在这个例子中,我们使用for-each循环和HashSet的add方法来删除重复的元素。

执行上面示例代码,得到以下结果 -

1
2
Before : [One Two Three Three Four Five Six Six]
After : [Five Six One Four Two Three]

文件:RemoveDuplicateFromList2.java -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package site.zcopy.blog;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicateFromList2 {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("One");
list.add("Two");
list.add("Three");
list.add("Three"); /* Duplicate Entry*/
list.add("Four");
list.add("Five");
list.add("Six");
list.add("Six"); /* Duplicate Entry*/

System.out.println("Before : "+list);
Set<String> set=new HashSet<>(list);
System.out.println("After: "+set);
}
}

在这个例子中,使用HashSet的构造函数来删除重复的元素。执行上面示例代码,得到以下结果

Before : [One Two Three Three Four Five Six Six]
After : [Five Six One Four Two Three]

文件:RemoveDuplicateFromList3.java -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package site.zcopy.blog;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicateFromList3 {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("One");
list.add("Two");
list.add("Three");
list.add("Three"); /* Duplicate Entry*/
list.add("Four");
list.add("Five");
list.add("Six");
list.add("Six"); /* Duplicate Entry*/

System.out.println("Before : "+list);
Set<String> set=new LinkedHashSet<>(list);
System.out.println("After : "+set);
}
}

在这个例子中,使用LinkedHashSet的构造函数来删除重复的元素。LinkedHashSet保持元素的顺序与列表相同。

执行上面示例代码,得到以下结果 -

1
2
Before : [One Two Three Three Four Five Six Six]
After : [One Two Three Four Five Six]