Java创建常量List

在Java中,我们经常需要创建一些常量集合,这些集合的元素不可变,即不可被修改或添加。通常情况下,我们使用List来表示集合,但是默认情况下,List是可变的,可以进行增删改操作。为了创建一个不可变的常量List,我们可以使用一些特定的方法和技巧。

方法一:使用Collections.unmodifiableList()

Java标准库中的Collections类提供了一个静态方法unmodifiableList(),可以将一个可变的List对象转换为不可变的常量List

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

public class ConstantListExample {
    public static void main(String[] args) {
        List<String> mutableList = new ArrayList<>();
        mutableList.add("apple");
        mutableList.add("banana");
        mutableList.add("cherry");

        List<String> constantList = Collections.unmodifiableList(mutableList);

        // constantList.add("date");  // 抛出 UnsupportedOperationException
        // constantList.remove(0);   // 抛出 UnsupportedOperationException

        System.out.println(constantList);
    }
}

上述代码中,我们首先创建了一个可变的List对象mutableList,并向其中添加了几个元素。然后,使用Collections.unmodifiableList()方法将其转换为不可变的常量List对象constantList。最后,我们尝试对constantList进行增删操作,发现会抛出UnsupportedOperationException异常,因为不可变的List对象不能进行修改操作。

方法二:使用Arrays.asList()

除了使用Collections.unmodifiableList()方法之外,我们还可以使用Arrays.asList()方法来创建常量List

import java.util.Arrays;
import java.util.List;

public class ConstantListExample {
    public static void main(String[] args) {
        List<String> constantList = Arrays.asList("apple", "banana", "cherry");

        // constantList.add("date");  // 抛出 UnsupportedOperationException
        // constantList.remove(0);   // 抛出 UnsupportedOperationException

        System.out.println(constantList);
    }
}

上述代码中,我们直接使用Arrays.asList()方法创建了一个常量List对象constantList,并通过参数传递元素,元素之间使用逗号分隔。同样地,我们尝试对constantList进行增删操作,会抛出UnsupportedOperationException异常。

序列图

下面的序列图展示了创建常量List的过程:

sequenceDiagram
    participant A as 创建常量List
    participant B as 可变List
    participant C as 不可变List
    A ->> B: 创建可变List
    B ->> B: 添加元素
    A ->> C: 转换为不可变List
    B -->> C: 返回不可变List

结论

通过使用Collections.unmodifiableList()Arrays.asList()方法,我们可以很容易地创建常量List对象。这些常量List对象不可被修改或添加,能够满足我们创建常量集合的需求。

然而需要注意的是,虽然常量List对象本身不可变,但是如果原始的可变List对象发生了改变,那么常量List对象也会相应地发生变化。因此,在使用常量List对象时,要确保原始的可变List对象不会被修改。

希望本文能帮助你理解如何在Java中创建常量List。如果你有任何问题或建议,欢迎留言讨论!