Java合并两个List并去重的实现

一、问题描述

小白在开发中遇到了一种需求,需要将两个Java List合并,并且去除重复元素。作为一名经验丰富的开发者,我将指导他完成这个任务。

二、解决方案概述

我们可以通过以下步骤来实现合并两个List并去重:

  1. 创建一个新的空List,用于存储合并后的结果。
  2. 将第一个List的所有元素添加到新List中。
  3. 遍历第二个List的每个元素,判断是否已经存在于新List中。
  4. 如果不存在,则将该元素添加到新List中。
  5. 返回新List作为最终结果。

三、代码实现

下面是实现这个功能的Java代码示例:

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

public class ListMergeAndDistinct {
    public static List<Integer> mergeAndDistinct(List<Integer> list1, List<Integer> list2) {
        List<Integer> mergedList = new ArrayList<>(); // 创建一个新的空List,用于存储合并后的结果
        
        mergedList.addAll(list1); // 将第一个List的所有元素添加到新List中
        
        Set<Integer> distinctSet = new HashSet<>(mergedList); // 创建一个Set,用于去重
        
        for (Integer element : list2) {
            if (!distinctSet.contains(element)) { // 判断是否已经存在于新List中
                mergedList.add(element); // 将不重复的元素添加到新List中
                distinctSet.add(element); // 将元素添加到Set中,以便下次判断
            }
        }
        
        return mergedList; // 返回合并去重后的结果
    }
}

四、代码解析

在上述代码中,我们首先创建了一个新的空List mergedList,用于存储合并后的结果。然后,我们通过调用 addAll() 方法将第一个List的所有元素添加到新List中。接下来,我们使用 HashSet 创建了一个Set distinctSet,用于去重。

在遍历第二个List的每个元素时,我们使用 contains() 方法判断该元素是否已经存在于新List中。如果不存在,则将该元素添加到新List中,并将该元素也添加到Set中,以便下次判断时能够正确判断元素是否重复。

最后,我们将新List作为结果返回。

五、流程图

下面是这个流程的流程图表示:

flowchart TD
    A[创建新的空List mergedList] --> B[将第一个List的所有元素添加到 mergedList]
    B --> C[创建Set distinctSet]
    C --> D[遍历第二个List的每个元素]
    D --> E[判断元素是否已存在于 mergedList]
    E --> F{元素已存在于 mergedList?}
    F --> |是| D
    F --> |否| G[将元素添加到 mergedList和 distinctSet]
    G --> D
    D --> H[返回 mergedList作为结果]

六、使用示例

下面是一个使用示例,展示了如何调用合并两个List并去重的方法:

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list1 = Arrays.asList(1, 2, 3);
        List<Integer> list2 = Arrays.asList(3, 4, 5);
        
        List<Integer> mergedList = ListMergeAndDistinct.mergeAndDistinct(list1, list2);
        
        System.out.println("合并去重后的结果:" + mergedList);
    }
}

输出结果:

合并去重后的结果:[1, 2, 3, 4, 5]

七、总结

通过上述步骤和代码示例,我们成功实现了合并两个Java List并去重的功能。这个方法可以方便地将两个List合并为一个,并且去除重复元素。希望本文对刚入行的小白有所帮助,能够理解并掌握这一常见开发需求的解决方法。