java中如何两个集合合并去重

java中如何两个集合合并去重

作者:Rhett Bai发布时间:2026-02-04阅读时长:0 分钟阅读次数:1

用户关注问题

Q
如何使用Java合并两个集合并移除重复元素?

在Java中,怎样才能将两个集合合并成一个,同时确保合并后的集合里没有重复的元素?

A

通过使用Set接口合并集合并去重

可以将两个集合加入到一个实现了Set接口的集合中,例如HashSet。Set集合天生不允许重复元素,所以合并后会自动去重。示例代码如下:

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");

Set<String> resultSet = new HashSet<>();
resultSet.addAll(list1);
resultSet.addAll(list2);

List<String> mergedList = new ArrayList<>(resultSet);
Q
使用Java Stream流如何合并两个列表并去除重复元素?

Java 8引入了Stream API,能不能利用Stream来实现集合的合并且去重?具体应该怎么操作?

A

利用Stream的concat和distinct实现合并去重

可以使用Stream的concat()方法将两个集合的流连接起来,然后调用distinct()方法去除重复元素。最后收集成一个新的集合就可以了。示例代码示范如下:

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");

List<String> mergedList = Stream.concat(list1.stream(), list2.stream())
    .distinct()
    .collect(Collectors.toList());
Q
合并两个Java集合时,如何保证集合的顺序不变且去重?

想在合并集合时保留原有元素的顺序,并去掉重复项,该如何用Java实现?

A

使用LinkedHashSet保持元素插入顺序去重

通过将集合元素添加到LinkedHashSet中,能够实现去重且同时保持元素插入顺序。示例代码如下:

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");

Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.addAll(list1);
linkedHashSet.addAll(list2);

List<String> mergedList = new ArrayList<>(linkedHashSet);