📅  最后修改于: 2023-12-03 15:31:33.178000             🧑  作者: Mango
列表是在Java中常用的数据结构之一。通常,我们可以创建一个可变的列表,可以向其中添加或删除元素。但有时,我们需要创建一个不可修改的列表,也就是在创建后不能向其中添加或删除元素。这在一些场景下很有用,比如当我们需要向其他类或对象传递一个列表但又不希望被修改时。
Java中提供了一种创建不可修改的列表的方法,就是使用 Collections.unmodifiableList()
方法。这个方法返回的是一个包装了原始列表的不可修改的列表,任何对原始列表的修改操作都会抛出 UnsupportedOperationException
异常。
下面是一个示例代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ImmutableArrayListExample {
public static void main(String[] args) {
List<String> mutableList = new ArrayList<>();
mutableList.add("Java");
mutableList.add("Python");
mutableList.add("C++");
List<String> immutableList = Collections.unmodifiableList(mutableList);
// immutableList.add("JavaScript"); // 会抛出 UnsupportedOperationException 异常
System.out.println("Mutable List: " + mutableList);
System.out.println("Immutable List: " + immutableList);
}
}
在这个示例中,我们首先创建了一个可变的列表 mutableList
,然后使用 Collections.unmodifiableList()
方法创建了一个不可修改的列表 immutableList
。接着我们尝试向 immutableList
中添加一个元素,会发现会抛出 UnsupportedOperationException
异常。
最后,我们分别输出了 mutableList
和 immutableList
的元素,可以看出 mutableList
中已经包含了新添加的元素,而 immutableList
不会包含新添加的元素。
本文介绍了如何在Java中创建不可修改的列表,使用 Collections.unmodifiableList()
方法可以将可变的列表包装成一个不可修改的列表。在需要传递列表但不希望被修改的场景下,这种方法非常有用。但需要注意的是,在不可修改的列表中添加或删除元素会导致 UnsupportedOperationException
异常。