Java Stream实现两个list去重

1. 简介

在Java开发中,经常会遇到需要将两个List合并并去重的问题。使用Java Stream可以非常方便地实现这一需求。本文将介绍如何使用Java Stream来实现两个List的去重操作,并提供详细的代码示例。

2. 流程图

首先,让我们来看一下整个流程的图示,如下所示:

erDiagram
    List1 ||--o{ 合并
    List2 ||--o{ 去重
    去重 --o| 结果

3. 代码示例

下面是每一步需要做的事情以及对应的代码示例:

3.1. 合并两个List

首先,我们需要将两个List合并成一个List。可以使用addAll()方法来实现。代码示例:

List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");

List<String> list2 = new ArrayList<>();
list2.add("B");
list2.add("C");

List<String> mergedList = new ArrayList<>();
mergedList.addAll(list1);
mergedList.addAll(list2);

在上述代码中,我们创建了两个List:list1list2。然后,使用addAll()方法将list2中的元素添加到list1中,从而实现了两个List的合并。

3.2. 去重

接下来,我们需要使用Java Stream来对合并后的List进行去重操作。可以使用distinct()方法来实现。代码示例:

List<String> distinctList = mergedList.stream().distinct().collect(Collectors.toList());

在上述代码中,我们使用stream()方法将List转换为Stream,然后使用distinct()方法进行去重操作,最后使用collect(Collectors.toList())方法将Stream转换为List。

3.3. 完整代码示例

下面是完整的代码示例,包括合并和去重的操作:

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

public class ListUtils {
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");

        List<String> list2 = new ArrayList<>();
        list2.add("B");
        list2.add("C");

        List<String> mergedList = new ArrayList<>();
        mergedList.addAll(list1);
        mergedList.addAll(list2);

        List<String> distinctList = mergedList.stream().distinct().collect(Collectors.toList());

        System.out.println("合并后的List:" + mergedList);
        System.out.println("去重后的List:" + distinctList);
    }
}

运行上述代码,输出结果如下:

合并后的List:[A, B, B, C]
去重后的List:[A, B, C]

4. 总结

使用Java Stream可以非常方便地实现两个List的去重操作。通过使用addAll()方法将两个List合并,然后使用distinct()方法对合并后的List进行去重,即可得到最终的去重结果。希望本文对于理解和使用Java Stream进行List去重有所帮助。