java求多list交集
时间: 2023-11-25 07:07:40 浏览: 35
可以使用Java8的Stream API来求多个List的交集。具体实现方法如下:
```java
List<List<Integer>> lists = new ArrayList<>();
// 假设lists中有多个List<Integer>类型的集合
List<Integer> intersection = lists.stream().reduce((list1, list2) -> {
list1.retainAll(list2);
return list1;
}).orElse(new ArrayList<>());
```
上述代码中,首先定义了一个List<List<Integer>>类型的lists集合,其中包含多个List<Integer>类型的集合。然后使用Stream API的reduce方法,将lists中的所有集合依次取出,与第一个集合取交集,最终得到所有集合的交集。如果lists为空,则返回一个空的ArrayList。
相关问题
java两个list求交集
Java中可以使用"retainAll"方法来求两个list的交集。
示例代码:
```
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6));
list1.retainAll(list2);
System.out.println(list1); // 输出 [3, 4]
```
"retainAll"方法会在第一个list中保留与第二个list中的元素相同的元素,并删除第一个list中其他的元素。
注意:这个方法会改变原来的list,如果需要保留原来的list,可以先复制一份再使用。
java list 交集
在Java中,可以使用retainAll()方法来获取两个List的交集。有两种方式可以实现这个目标:规避侵入式取交集和侵入式取交集。
规避侵入式取交集是指创建一个新的List,将其中一个List的元素添加到新的List中,然后使用retainAll()方法来保留与另一个List相同的元素。这种方式不会改变原始的List。例如,给定两个List list1和list2,可以使用以下代码获取它们的交集:
```
List<Integer> list1 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList(Arrays.asList(1, 2, 3, 6, 7, 8, 9));
List<Integer> list3 = new ArrayList(list1);
list3.retainAll(list2);
System.out.println(list3); // 输出 \[1, 2, 3\]
```
在这个例子中,list3是list1和list2的交集,而list1和list2保持不变。\[1\]
侵入式取交集是指直接在一个List上调用retainAll()方法,将其修改为两个List的交集。这种方式会改变原始的List。例如,给定两个List list1和list2,可以使用以下代码获取它们的交集:
```
List<Integer> list1 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList(Arrays.asList(1, 2, 3, 6, 7, 8, 9));
list1.retainAll(list2);
System.out.println(list1); // 输出 \[1, 2, 3\]
```
在这个例子中,list1被修改为list1和list2的交集,而list2保持不变。\[2\]
需要注意的是,如果两个List本身就是相同的,那么它们的交集将是原始的List。例如:
```
List<Integer> list1 = new ArrayList(Arrays.asList(1, 2, 3, 6, 7, 8, 9));
List<Integer> list2 = new ArrayList(Arrays.asList(1, 2, 3, 6, 7, 8, 9));
list1.retainAll(list2);
System.out.println(list1); // 输出 \[1, 2, 3, 6, 7, 8, 9\]
```
在这个例子中,list1和list2本身就是相同的,所以它们的交集就是原始的List。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [java集合的交集](https://blog.csdn.net/weixin_37646636/article/details/128378090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]