首页 >Java >java教程 >如何在 Java 中有效比较两个列表以查找共同元素和不同元素?

如何在 Java 中有效比较两个列表以查找共同元素和不同元素?

DDD
DDD原创
2024-12-01 01:09:15598浏览

How Can I Efficiently Compare Two Lists in Java to Find Both Common and Different Elements?

Java 中比较两个列表

在 Java 中,可以通过各种方法和数据结构来实现比较两个列表。本文探讨了比较列表的几种方法,重点是查找相似和不同的元素。

ArrayList 和 keepAll 方法

使用 ArrayList 和 keepAll 方法可以让您仅保留两个列表中包含的元素。

import java.util.Collection;
import java.util.ArrayList;

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

        list1.retainAll(list2);
        System.out.println("Common elements: " + list1);
    }
}

HashSet 和 removeAll方法

如果您不仅需要查找共同元素,还需要查找不同元素,那么使用 HashSet 和 removeAll 方法是合适的方法。 HashSet 不允许重复,因此它可以消除重复的值。

import java.util.Collection;
import java.util.HashSet;

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

        Collection<String> common = new HashSet<>(list1);
        Collection<String> different = new HashSet<>();
        different.addAll(list1);
        different.addAll(list2);

        common.retainAll(list2);
        different.removeAll(common);

        System.out.printf("Common elements: %s%nDifferent elements: %s%n", common, different);
    }
}

自定义方法

或者,您可以创建一个自定义方法来比较列表和返回共同元素和不同元素。这提供了更多的灵活性和定制选项。

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

        List<String> common = new ArrayList<>();
        List<String> different = new ArrayList<>();

        for (String element : list1) {
            if (list2.contains(element)) {
                common.add(element);
            } else {
                different.add(element);
            }
        }

        for (String element : list2) {
            if (!list1.contains(element)) {
                different.add(element);
            }
        }

        System.out.printf("Common elements: %s%nDifferent elements: %s%n", common, different);
    }
}

通过利用这些技术,您可以有效地比较 Java 中的两个列表,识别共同元素和不同元素

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

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