java list 交集
时间: 2023-09-06 14:06:46 浏览: 112
在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 ]
阅读全文