Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java两个list取差集 高效


在 Java 中,你可以使用不同的方式来高效地取两个列表的差集。以下是几种实现方式以及对应的步骤流程和示例代码。

假设有两个列表 list1list2,你想要得到它们的差集,即 list1 - list2

使用循环和条件判断

这是一种基本的方法,逐个检查 list1 中的元素是否存在于 list2,如果不存在,则添加到结果列表中。

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

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

        List<Integer> list2 = new ArrayList<>();
        list2.add(2);
        list2.add(3);

        List<Integer> difference = new ArrayList<>();

        for (Integer item : list1) {
            if (!list2.contains(item)) {
                difference.add(item);
            }
        }

        System.out.println("Difference: " + difference); // Output: [1]
    }
}

使用 Java 8 Stream API

Java 8 引入的 Stream API 提供了更为简洁的方式来处理集合数据。你可以使用 filter 操作来筛选出不存在于 list2 的元素。

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

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

        List<Integer> list2 = new ArrayList<>();
        list2.add(2);
        list2.add(3);

        List<Integer> difference = list1.stream()
            .filter(item -> !list2.contains(item))
            .collect(Collectors.toList());

        System.out.println("Difference: " + difference); // Output: [1]
    }
}

使用 Google Guava 库

Google Guava 是一个流行的 Java 库,提供了丰富的集合操作功能。你可以使用 Sets.difference() 方法来计算差集。

在 Maven 中添加依赖:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1-jre</version>
</dependency>

在 Gradle 中添加依赖:

implementation 'com.google.guava:guava:30.1-jre'

示例代码:

import com.google.common.collect.Sets;

import java.util.Set;

public class ListDifferenceExample {
    public static void main(String[] args) {
        Set<Integer> list1 = Sets.newHashSet(1, 2, 3);
        Set<Integer> list2 = Sets.newHashSet(2, 3);

        Set<Integer> difference = Sets.difference(list1, list2);

        System.out.println("Difference: " + difference); // Output: [1]
    }
}

以上是几种取两个列表差集的方法,你可以根据项目的需要选择其中之一。其中,使用 Google Guava 的方法在处理大量数据时可能会更加高效。

它遍历第一个集合中的每个元素,并检查是否在第二个集合中存在,如果不存在就添加到差集中。Maven依赖:Gradle依赖:这些是计算两个集合差 ...
在Java中,将List集合转换为HashMap对象的最高效方法是使用Java8的StreamAPI。StreamAPI在内部使用了并行处理 ...
###方法一:使用循环遍历这是一种基本的方法,通过循环遍历一个列表,然后在另一个列表中查找是否存在相同的元素,从而找到交集。示例代码:### ...
下面我将为您介绍三种常见的实现方式,包括使用循环、使用Java8Stream和使用GoogleGuava库。###方法三:使用GoogleG ...
假设我们有两个List,分别是list1和list2,我们的目标是将它们合并成一个新的List。###使用ApacheCommonsColl ...