有没有办法在多个列表中查找常见元素?

2022-09-02 08:56:14

我有一个整数数组列表。我需要找到它们之间的共同要素。我能想到的是两个列表的常见元素中列出的内容的扩展

Example would be 
[1,3,5],
[1,6,7,9,3],
[1,3,10,11]

should result in [1,3]

数组中也没有重复项。

有没有一种直接的方法可以做到这一点?


答案 1

您可以将列表转换为集,然后使用方法在不同集之间进行交集。与所有集相交后,您将只剩下公共元素,并且可以将结果集转换回列表。Set.retainAll


答案 2

您可以使用Guava提供的Set的交集方法,这里有一个小例子:

public <T> Set<T> intersection(List<T>... list) {
    Set<T> result = Sets.newHashSet(list[0]);
    for (List<T> numbers : list) {
        result = Sets.intersection(result, Sets.newHashSet(numbers));
    }
    return result;
}

希望对您有所帮助