如何在Java中创建不可变集合?
无论何时你需要创建一个初始化后无法更改的对象,你都可以定义一个不可变对象。创建不可变对象没有具体的规则,其理念是在初始化后限制对类字段的访问。
集合在集合框架中是一个接口,它不允许重复值。
创建不可变集合时,你需要记住以下几点:
- 我们不应该能够向其中添加或删除元素。
- 我们不应该能够向不可变集合中添加空值。
- 一旦你创建了一个不可变集合,你不能向其中添加或删除对象,但是你可以修改其中存储的对象。
使用Java 9的of()方法
Java 9 的of()方法接受元素列表,并创建一个包含给定元素的不可变集合并返回它。使用此方法,你可以在Java中创建不可变集合。
import java.util.Set;
public class ImmutableSet {
public static void main(String args[]) {
Set<Integer> set = Set.of(1458, 5548, 4587);
System.out.println(set);
}
}使用unmodifiableSet()方法
此方法接受一个集合对象作为参数,并返回其不可修改的,即不可变的形式。
通过传递所需的对象并获取其不可变形式来调用此方法。
示例
在下面的Java程序中,我们创建了一个HashSet对象,并使用unmodifiableSet()方法将其转换为不可变对象,并尝试向其中添加元素。
由于我们使其不可变,因此会生成运行时异常。
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class ImmutableSet {
public static void main(String args[]) {
Set<Integer> hashSet = new HashSet<Integer>();
//Populating the HashSet
hashSet.add(1124);
hashSet.add(3654);
hashSet.add(7854);
hashSet.add(9945);
System.out.println(hashSet);
//Converting set object to immutable
Set immutable = Collections.unmodifiableSet(hashSet);
immutable.add(4466);
}
}输出
[1124, 3654, 9945, 7854] Exception in thread "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Unknown Source) at MyPackage.ImmutableSet.main(ImmutableSet.java:19)
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP