欢迎访问宙启技术站
智能推送

Java函数实现列表元素去重的方法

发布时间:2023-06-02 09:29:42

在编程中,经常会遇到需要对列表进行去重的情景。Java提供了多种方式来实现列表元素去重的方法,下面将介绍四种常用的方法。

1.使用Set实现列表去重

Java中的Set是一种无序且不允许重复元素的容器。可以通过Set的add()方法将列表中的元素添加到Set中,由于Set保证不允许重复元素,因此最终得到的Set中只会包含列表中的不重复元素。

下面是一个使用Set实现列表去重的例子:

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

public class RemoveDuplicates {

    public static void main(String[] args) {
        List<Integer> listWithDuplicates = new ArrayList<>();
        listWithDuplicates.add(1);
        listWithDuplicates.add(2);
        listWithDuplicates.add(3);
        listWithDuplicates.add(1);

        Set<Integer> setWithoutDuplicates = new HashSet<>(listWithDuplicates);

        System.out.println("List with duplicates: " + listWithDuplicates);
        System.out.println("Set without duplicates: " + setWithoutDuplicates);
    }
}

运行结果:

List with duplicates: [1, 2, 3, 1]
Set without duplicates: [1, 2, 3]

2.使用Stream API实现列表去重

Java 8引入了Stream API,可以使用它来对列表进行各种操作,包括去重。可以通过stream()方法将列表转换为流,然后使用distinct()方法对流进行去重操作。

下面是一个使用Stream API实现列表去重的例子:

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

public class RemoveDuplicates {

    public static void main(String[] args) {
        List<Integer> listWithDuplicates = new ArrayList<>();
        listWithDuplicates.add(1);
        listWithDuplicates.add(2);
        listWithDuplicates.add(3);
        listWithDuplicates.add(1);

        List<Integer> listWithoutDuplicates = listWithDuplicates.stream().distinct().collect(Collectors.toList());

        System.out.println("List with duplicates: " + listWithDuplicates);
        System.out.println("List without duplicates: " + listWithoutDuplicates);
    }
}

运行结果:

List with duplicates: [1, 2, 3, 1]
List without duplicates: [1, 2, 3]

3.使用LinkedHashSet实现列表去重

LinkedHashSet是HashSet与LinkedList的结合体,它既保证了去重,又可以按照元素插入的顺序访问。可以通过创建一个LinkedHashSet对象,并将列表中的元素添加到该对象中来实现去重。

下面是一个使用LinkedHashSet实现列表去重的例子:

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

public class RemoveDuplicates {

    public static void main(String[] args) {
        List<Integer> listWithDuplicates = new ArrayList<>();
        listWithDuplicates.add(1);
        listWithDuplicates.add(2);
        listWithDuplicates.add(3);
        listWithDuplicates.add(1);

        Set<Integer> setWithoutDuplicates = new LinkedHashSet<>(listWithDuplicates);

        List<Integer> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);

        System.out.println("List with duplicates: " + listWithDuplicates);
        System.out.println("List without duplicates: " + listWithoutDuplicates);
    }
}

运行结果:

List with duplicates: [1, 2, 3, 1]
List without duplicates: [1, 2, 3]

4.使用Java 8新特性-Stream API与Collectors.toSet()实现列表去重

Java 8还提供了另一种简便的方法来去重,即使用Collectors.toSet()来将流转换为Set集合。同样可以通过stream()方法将列表转换为流,然后使用Collectors.toSet()方法将流转换为Set集合。

下面是一个使用Java 8新特性Stream API与Collectors.toSet()实现列表去重的例子:

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

public class RemoveDuplicates {

    public static void main(String[] args) {
        List<Integer> listWithDuplicates = new ArrayList<>();
        listWithDuplicates.add(1);
        listWithDuplicates.add(2);
        listWithDuplicates.add(3);
        listWithDuplicates.add(1);

        Set<Integer> setWithoutDuplicates = listWithDuplicates.stream().collect(Collectors.toSet());

        List<Integer> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);

        System.out.println("List with duplicates: " + listWithDuplicates);
        System.out.println("List without duplicates: " + listWithoutDuplicates);
    }
}

运行结果:

List with duplicates: [1, 2, 3, 1]
List without duplicates: [1, 2, 3]

总结

本文介绍了Java中四种常用的方法来实现列表元素去重,分别是使用Set实现、使用Stream API实现、使用LinkedHashSet实现和使用Java 8新特性Stream API与Collectors.toSet()实现。在实际使用中,可以根据业务需求来选择不同的方法来实现列表元素去重。