多个list都存在的元素取交集算法java
时间: 2024-01-23 17:03:14 浏览: 73
Linq两个List集合取交集的实现
5星 · 资源好评率100%
您好!很高兴收到您的问题。以下是一种Java算法,用于获取多个列表的元素的交集:
```
public List<Integer> getIntersection(List<Integer>... lists) {
Map<Integer, Integer> counter = new HashMap<>();
for (List<Integer> list : lists) {
for (int element : list) {
if (counter.containsKey(element)) {
counter.put(element, counter.get(element) + 1);
} else {
counter.put(element, 1);
}
}
}
List<Integer> intersection = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : counter.entrySet()) {
if (entry.getValue() == lists.length) {
intersection.add(entry.getKey());
}
}
return intersection;
}
```
此算法使用哈希映射和计数器来计算每个元素的出现次数,并仅将出现在所有输入列表中的元素添加到交集中。您可以调用该方法并传入多个列表,如下所示:
```
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6);
List<Integer> list3 = Arrays.asList(2, 3, 4, 6);
List<Integer> intersection = getIntersection(list1, list2, list3);
System.out.println(intersection); // Output: [3, 4]
```
如果您有任何其他问题,请随时问我。
阅读全文