Collections.emptyList()不能往里面add
时间: 2024-04-29 14:20:59 浏览: 78
是的,你说得没错。Collections.emptyList()返回的是一个不可变的空列表,即使你尝试向其中添加元素,也会抛出UnsupportedOperationException异常。这个方法返回的是一个不可改变的空的List对象,可以用作函数的返回值或者其他需要一个空List的场合。但是由于这个List是不可变的,所以不能往其中添加任何元素。
相关问题
List l = Collections.emptyList(); l.add(0f);
在给一个空的不可变列表 `Collections.emptyList()` 添加元素时,会抛出 `UnsupportedOperationException` 异常。因为 `Collections.emptyList()` 返回的是一个不可修改的空列表,它不支持添加、删除或修改操作。
所以,`l.add(0f)` 这行代码会导致异常的抛出。
如果你想创建一个可变的空列表,可以使用 `new ArrayList<>()` 来创建一个空的 ArrayList,然后再添加元素。例如:
```java
List<Float> l = new ArrayList<>();
l.add(0f);
```
Collections.EMPTY_LIST
`Collections.EMPTY_LIST`是Java中的一个常量,它是`Collections`类中的一个静态成员,用于表示一个空的不可变列表。这个常量的类型是`List`,但它是一个空列表,没有任何元素。
使用`Collections.EMPTY_LIST`可以方便地获取一个空列表对象,而不需要每次都创建一个新的空列表。这样可以提高性能并减少不必要的对象创建。
需要注意的是,`Collections.EMPTY_LIST`返回的列表是不可变的,即不能对其进行添加、删除或修改操作。如果尝试对其进行修改,会抛出`UnsupportedOperationException`异常。
以下是一个使用`Collections.EMPTY_LIST`的示例:
```java
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> emptyList = Collections.EMPTY_LIST;
System.out.println(emptyList); // 输出:[]
// 尝试对空列表进行添加操作,会抛出异常
emptyList.add("item"); // 抛出 UnsupportedOperationException 异常
}
}
```
需要注意的是,由于`Collections.EMPTY_LIST`是一个不可变的空列表,所以无法对其进行修改。如果需要一个可变的空列表,可以使用`new ArrayList<>()`来创建一个空的可变列表。
阅读全文