retainAll null空指针
时间: 2023-09-13 17:14:08 浏览: 46
`retainAll()` 方法是用来保留集合中只包含指定集合中的元素,而删除其它元素。如果指定的集合为 `null`,则会抛出 `NullPointerException` 异常。
例如,下面的代码会抛出 `NullPointerException` 异常:
```java
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.retainAll(null); // 抛出 NullPointerException 异常
```
为了避免这种情况,可以先判断指定的集合是否为 `null`,例如:
```java
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
List<Integer> toRetain = null;
if (toRetain != null) {
list.retainAll(toRetain);
}
```
相关问题
retainAll
Java中List提供了retainAll()方法来实现两个List的交集操作。retainAll()方法会修改原始List,只保留与另一个集合中相同的元素,删除其他元素。
示例代码如下:
```java
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B", "C"));
List<String> list2 = new ArrayList<>(Arrays.asList("B", "C", "D"));
list1.retainAll(list2);
System.out.println(list1); // 输出 [B, C]
```
首先将两个List<String>分别用Arrays.asList()转换为List,然后使用retainAll()方法将list1中与list2不同的元素删除,只保留相同的元素。最后输出结果为交集[B, C]。需要注意的是,retainAll()方法会修改原始List,如果不想修改原始List,可以先复制一份然后进行操作。
map retainAll
Map的retainAll()方法是用于保留指定集合中包含的映射,而删除不包含在指定集合中的映射。该方法的语法如下:
```java
boolean retainAll(Map<?, ?> c)
```
其中,参数c是一个Map类型的集合,表示要保留的映射集合。
以下是一个使用retainAll()方法的示例:
```java
Map<String, Integer> map1 = new HashMap<>();
map1.put("A", 1);
map1.put("B", 2);
map1.put("C", 3);
Map<String, Integer> map2 = new HashMap<>();
map2.put("B", 2);
map2.put("C", 4);
map2.put("D", 5);
map1.retainAll(map2);
System.out.println(map1); // 输出:{B=2, C=3}
```
在上面的示例中,我们创建了两个Map类型的集合map1和map2,然后使用retainAll()方法将map1中不包含在map2中的映射删除,最终输出结果为{B=2, C=3}。