如何从ArrayList中删除重复项

原文:https://www.studytonight.com/java-examples/how-to-remove-duplicates-from-arraylist

在这篇文章中,我们将从 Java 中的ArrayList中移除重复的元素。ArrayList是集合框架中 List 接口的实现类,用于存储数据的类。

由于ArrayList允许我们存储重复的元素,因此有时我们需要从ArrayList中获取唯一的元素,然后我们必须删除重复的元素。

要删除重复项,有一个简单易行的方法,只需将ArrayList转换为HashSet,即可获得唯一的元素。因为 HashSet 只存储唯一的元素。它会自动删除所有重复项。

因此,为了消除重复,我们使用了两种方法,一种是转换为 HashSet,另一种是使用 stream 的 distinct()方法,该方法从流中返回唯一的元素。请看例子。

举例时间:

让我们创建一个从ArrayList中删除所有重复项的例子。在这里,我们使用 HashSet 并将 Arraylist 作为 n 参数传递给它的构造器。它返回一个唯一的集合,但是我们需要一个ArrayList,所以通过将它传递给ArrayList构造器,将其转换回ArrayList

import java.util.ArrayList;
import java.util.HashSet;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
        arrList1.add(1030);
        arrList1.add(1020);
        arrList1.add(1010);
        arrList1.add(1030);
        System.out.println(arrList1);
        // Remove duplicates
        HashSet<Integer> set = new HashSet<Integer>(arrList1);
        // Convert back to ArrayList
        arrList1 = new ArrayList<Integer>(set); 
        System.out.println(arrList1);

    }
}

【1030,1020,1010,1030】 【1010,1030,1020】

示例:

如果你不想把ArrayList转换成HashSet,那么你可以使用另一种方法蒸汽 API。流提供了一个distinct()方法,从流中删除重复项,toList()方法返回一个唯一元素的列表。

import java.util.ArrayList;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
        arrList1.add(1030);
        arrList1.add(1020);
        arrList1.add(1010);
        arrList1.add(1030);
        System.out.println(arrList1);
        // Remove duplicates
        arrList1 = (ArrayList<Integer>)arrList1.stream().distinct().collect(Collectors.toList()); 
        System.out.println(arrList1);

    }
}

【1030,1020,1010,1030】 【1030,1020,1010】