首页 >Java >java教程 >如何在 Java 中高效地查找两个列表之间的共同元素和不同元素?

如何在 Java 中高效地查找两个列表之间的共同元素和不同元素?

Linda Hamilton
Linda Hamilton原创
2024-12-07 04:06:18749浏览

How Can I Efficiently Find Common and Distinct Elements Between Two Lists in Java?

查找两个列表中的共同元素

在此编程场景中,我们的目标是确定两个列表之间共同元素的数量,同时识别相似和不同的元素

要实现这一目标,可以利用 Java 的集合框架,特别是 ArrayList 或 HashSet 类。 ArrayList 中的 keepAll 方法仅保留两个列表共享的项目,提供公共元素的计数(本例中为三个)。

例如:

import java.util.ArrayList;
import java.util.Arrays;

public class CompareLists {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>(Arrays.asList("milan", "dingo", "iga", "elpha", "hafil", "meat", "iga", "milan", "elpha", "meat", "iga"));
        ArrayList<String> list2 = new ArrayList<>(Arrays.asList("hafil", "iga", "binga", "mike", "dingo", "dingo", "dingo"));

        list1.retainAll(list2);
        System.out.println(list1);
    }
}

或者,对第二个列表使用 HashSet 可以进行更有效的比较:

import java.util.HashSet;
import java.util.Arrays;

public class CompareLists {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>(Arrays.asList("milan", "dingo", "iga", "elpha", "hafil", "meat", "iga", "milan", "elpha", "meat", "iga"));
        HashSet<String> list2 = new HashSet<>(Arrays.asList("hafil", "iga", "binga", "mike", "dingo", "dingo", "dingo"));

        Set<String> common = new HashSet<>(list1);
        common.retainAll(list2);

        Set<String> unique = new HashSet<>(list1);
        unique.addAll(list2);
        unique.removeAll(common);

        System.out.println("Common: " + common);
        System.out.println("Distinct: " + unique);
    }
}

此版本识别常见值和不同值,处理重复值有效。

以上是如何在 Java 中高效地查找两个列表之间的共同元素和不同元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn