📜  Java中的集合 unmodifiableList() 方法和示例(1)

📅  最后修改于: 2023-12-03 15:32:02.437000             🧑  作者: Mango

Java中的集合 unmodifiableList() 方法和示例

在Java中,unmodifiableList()是一个非常有用的方法,它可以使用来创建一个不可修改的列表。一旦创建了这个列表,就不能再添加、删除或修改其中的元素。

使用方法

unmodifiableList()方法是在Collections类中定义的,以下是该方法的语法:

public static <T> List<T> unmodifiableList(List<? extends T> list)

该方法接收一个列表作为参数,并返回一个不可修改的列表。示例代码如下:

List<String> originalList = new ArrayList<>();
originalList.add("apple");
originalList.add("banana");
originalList.add("peach");

List<String> unmodifiableList = Collections.unmodifiableList(originalList);

在上面的例子中,我们创建了一个名为originalList的可变列表,并向其中添加了几个元素。然后,我们使用unmodifiableList()方法创建了一个不可修改的列表,并将其赋值给名为unmodifiableList的新变量。

现在,我们尝试修改unmodifiableList中的任何元素,例如向其中添加新元素或删除其中的元素,都会导致UnsupportedOperationException 异常。

示例代码

下面是一个完整的示例,展示了如何使用unmodifiableList()方法创建不可修改的List并尝试添加元素产生异常:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class UnmodifiableListExample {

    public static void main(String[] args) {

        List<String> originalList = new ArrayList<>();
        originalList.add("apple");
        originalList.add("banana");
        originalList.add("peach");

        List<String> unmodifiableList = Collections.unmodifiableList(originalList);

        // 尝试向不可修改的列表添加新元素
        try {
            unmodifiableList.add("pear");
        } catch (UnsupportedOperationException e) {
            System.out.println("添加新元素异常:" + e.getMessage());
        }

        // 尝试从不可修改的列表中删除元素
        try {
            unmodifiableList.remove(1);
        } catch (UnsupportedOperationException e) {
            System.out.println("删除元素异常:" + e.getMessage());
        }

        // 尝试修改不可修改的列表
        try {
            unmodifiableList.set(1, "orange");
        } catch (UnsupportedOperationException e) {
            System.out.println("修改元素异常:" + e.getMessage());
        }
    }
}

执行该代码将输出以下结果:

添加新元素异常:null
删除元素异常:null
修改元素异常:null

通过这个例子,我们可以看到,当我们尝试对unmodifiableList进行任何修改时,都会抛出UnsupportedOperationException 异常。这证明了unmodifiableList()方法确实创建了一个不可修改的列表。因此,如果你需要创建一个只读的列表,或者需要将一个列表传递给某个函数但不希望其修改该列表,则可以使用unmodifiableList()方法。