如何从Java中的ArrayList中删除重复项?

从ArrayList中删除重复项

要从ArrayList中删除重复项,有两种方法,

  1. 在HashSet的帮助下

  2. 借助LinkedHashSet

1)使用HashSet删除重复项

  • 此类在java.util包中可用。

  • 通过使用HashSet类,我们可以从ArrayList中删除重复的元素。

  • 如果是HashSet,则在删除重复元素后,将不保留元素的插入顺序(即,元素的检索顺序不需要与插入顺序相同)。

使用HashSet从ArrayList中删除重复元素的过程:

  • 将ArrayList元素复制到HashSet。

  • 复制后,使用clear()方法清除ArrayList 。

  • 再次将HashSet元素复制到ArrayList。

示例

//Java程序演示的例子
//从ArrayList中删除重复的元素 
//通过使用HashSet。

import java.util.*;

public class RemovedDuplicateFromArrayList {
    public static void main(String[] args) {
        //ArrayList声明
        ArrayList al = new ArrayList();

        //添加一些元素 
        //ArrayList-
        al.add(10);
        al.add(10);
        al.add(20);
        al.add(20);
        al.add(30);

        //显示重复的ArrayList-
        System.out.print("Display ArrayList with duplicates : " + " ");
        System.out.println(al);

        //HashSet声明
        HashSet hs = new HashSet();

        //通过使用addAll()方法是添加所有元素
        //到HashSet-

        hs.addAll(al);

        //通过使用clear()方法是清除ArrayList-
        al.clear();

        //再次使用addAll()方法是添加所有元素
        //到ArrayList-
        al.addAll(hs);

        //显示没有重复的ArrayList-
        System.out.print("Display ArrayList with no duplicates : " + " ");
        System.out.println(al);
    }
}

输出结果

Display ArrayList with duplicates :  [10, 10, 20, 20, 30]
Display ArrayList with no duplicates :  [20, 10, 30]

2)使用LinkedHashSet删除重复项

  • 此类在java.util包中可用。

  • 通过使用LinkedHashSet类,我们可以从ArrayList中删除重复的元素。

  • 对于LinkedHashSet,在删除重复元素之后,将保留元素的插入顺序(即,元素的检索顺序必须与插入顺序相同)。

使用LinkedHashSet从ArrayList中删除重复元素的过程:

  • 将ArrayList元素复制到LinkedHashSet。

  • 复制后,使用clear()方法清除ArrayList 。

  • 再次将LinkedHashSet元素复制到ArrayList。

示例

//Java程序演示的例子
//从ArrayList中删除重复的元素 
//通过使用LinkedHashSet。

import java.util.*;

public class RemovedDuplicateFromArrayList {
    public static void main(String[] args) {
        //ArrayList声明
        ArrayList al = new ArrayList();

        //添加一些元素 
        //ArrayList-
        al.add(10);
        al.add(10);
        al.add(20);
        al.add(20);
        al.add(30);

        //显示重复的ArrayList-
        System.out.print("Display ArrayList with duplicates : " + " ");
        System.out.println(al);

        //LinkedHashSet声明
        LinkedHashSet lhs = new LinkedHashSet();

        //通过使用addAll()方法是添加所有元素
        //到LinkedHashSet-
        lhs.addAll(al);

        //通过使用clear()方法是清除ArrayList-
        al.clear();

        //再次使用addAll()方法是添加所有元素
        //到ArrayList-
        al.addAll(lhs);

        //显示没有重复的ArrayList-
        System.out.print("Resultant ArrayList : " + " ");
        System.out.println(al);
    }
}

输出结果

Display ArrayList with duplicates :  [10, 10, 20, 20, 30]
Resultant ArrayList :  [10, 20, 30]