📜  如何从Java中的 ArrayList 中删除重复项(1)

📅  最后修改于: 2023-12-03 15:08:15.052000             🧑  作者: Mango

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

在 Java 中,ArrayList 是一个常用的可变数组类,它可以用来存储和操作一组对象。但是,有时候我们会遇到需要从 ArrayList 中删除重复项的情况。本文将介绍两种方法来实现这一目标。

方法一:使用 Set

Set 是 Java 中的一种数据结构,它只能存储不重复的元素。我们可以将 ArrayList 中的元素添加到一个 Set 中,然后再将 Set 中的元素写回到 ArrayList 中,这样就可以删除重复项。

下面是使用 Set 的示例代码:

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

public class RemoveDuplicates {

    public static <T> List<T> removeDuplicates(List<T> list) {
        Set<T> set = new HashSet<>();
        List<T> result = new ArrayList<>();
        for (T item : list) {
            if (!set.contains(item)) {
                set.add(item);
                result.add(item);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2);
        list.add(4);
        List<Integer> result = removeDuplicates(list);
        System.out.println(result);
    }
}

运行结果为:

[1, 2, 3, 4]
方法二:使用 Java 8 的 Stream API

Java 8 中引入了 Stream API,它提供了丰富的函数式操作来处理集合数据。我们可以使用 Stream API 来处理 ArrayList,实现删除重复项的目标。

下面是使用 Stream API 的示例代码:

import java.util.ArrayList;
import java.util.List;

public class RemoveDuplicates {

    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2);
        list.add(4);
        List<Integer> result = list.stream().distinct().toList();
        System.out.println(result);
    }
}

运行结果为:

[1, 2, 3, 4]
结论

本文介绍了两种方法来删除 Java 中 ArrayList 中的重复项。使用 Set 可以实现删除重复项的目标,而使用 Java 8 的 Stream API 可以提供更简洁的代码来实现同样的功能。