Java创建一个不可变List
时间: 2023-08-17 10:06:16 浏览: 57
在 Java 中,可以使用 Collections 类的 unmodifiableList() 方法来创建一个不可变 List。该方法接受一个 List 对象作为参数,返回一个新的 List 对象,该对象是只读的,不能被修改。以下是创建不可变 List 的示例代码:
```java
List<Integer> myList = new ArrayList<>();
myList.add(1);
myList.add(2);
myList.add(3);
myList.add(4);
myList.add(5);
List<Integer> immutableList = Collections.unmodifiableList(myList);
```
在这个例子中,我们首先创建了一个可变的 List 对象 myList,并向其中添加了 5 个整数。然后,我们调用 Collections 类的 unmodifiableList() 方法,将 myList 转换为一个不可变的 List 对象 immutableList。现在,immutableList 不能被修改,任何尝试修改它的操作都会导致 UnsupportedOperationException 异常的抛出。
相关问题
java中将一个不可变list变为可变
在Java中,我们可以通过将不可变List转换为可变List的方式来实现对List的修改。这个方法就是使用Java提供的Collections.unmodifiableList()方法来创建一个不可变的List对象,然后再将其转换为可变的List对象。
具体步骤如下:
1. 使用Arrays.asList()方法创建一个List对象,例如:List<String> list = Arrays.asList("a", "b", "c");
2. 使用Collections.unmodifiableList()方法将该List对象转换为不可变的List对象,例如:List<String> unmodifiableList = Collections.unmodifiableList(list);
3. 使用ArrayList的构造函数创建一个新的可变的List对象,并将不可变List中的元素添加到其中,例如:List<String> mutableList = new ArrayList<>(unmodifiableList);
这样就可以通过mutableList来修改原来的不可变List了。
java如何创建一个不可变对象
Java中创建不可变对象需要遵循以下步骤:
1. 使用final关键字声明类和成员变量:final关键字可以防止类被继承和变量被修改。
2. 去除所有的setter方法:不提供setter方法可以防止对象被修改。
3. 使用构造函数初始化:使用构造函数初始化对象的所有成员变量。
4. 对于可变成员变量,需要进行深拷贝:如果成员变量是可变的,需要在构造函数中进行深拷贝,以防止对象被修改。
下面是一个示例代码:
```
public final class ImmutableObject {
private final int age;
private final String name;
private final List<String> hobbies;
public ImmutableObject(int age, String name, List<String> hobbies) {
this.age = age;
this.name = name;
this.hobbies = new ArrayList<String>(hobbies);
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public List<String> getHobbies() {
return Collections.unmodifiableList(hobbies);
}
}
```
在上面的示例中,我们使用了final关键字声明了类和成员变量,去除了所有的setter方法,并在构造函数中进行了深拷贝。在getHobbies方法中,我们使用了Collections.unmodifiableList方法来返回一个只读的hobbies列表,防止对象被修改。这样就创建了一个不可变对象。