gpt4 book ai didi

java - 在 Java 中查找 N 个列表之间的公共(public)元素

转载 作者:行者123 更新时间:2023-11-29 06:56:10 26 4
gpt4 key购买 nike

我需要编写一个 Java 程序来查找任意数量的列表或整数数组(任意长度)的交集(公共(public)元素)。我想 Java Lists 可能有一个有用的方法来实现这一点,但我正在查看 API,但找不到它。

有什么提示吗?

最佳答案

您可以通过将一个列表的元素复制到一个新列表并使用retainAll 来找到两个列表之间的共同元素:

List<T> commonElements = new ArrayList<>(list1);
commonElements.retainAll(list2);

这可以扩展到n列表,因为n列表中的公共(public)元素是[第一个n-1的公共(public)元素 列表] 和 [第 n 列表的元素]:

commonElements.retainAll(list3);
commonElements.retainAll(list4);
...

例如

<T> List<T> commonElements(Iterable<? extends List<? extends T>> lists) {
Iterator<? extends List<? extends T>> it = lists.iterator();
List<T> commonElements = new ArrayList<T>(it.next());
while (it.hasNext()) {
commonElements.retainAll(it.next());
}
return commonElements;
}

请注意,如果列表为空,这将失败并返回 NoSuchElementException。通过在第一个 it.next() 之前添加对 it.hasNext() 的检查,可以直接处理这种情况。

关于java - 在 Java 中查找 N 个列表之间的公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com