有没有将 Set 转换成不可变的 Java 方法
如果需要创建在初始化后无法更改的对象,您可以定义一个不可变对象。创建不可变对象没有具体规则,其思想是限制类在初始化后对字段的访问。
Set 是集合框架中不允许重复值的一个接口。
转换为不可变的集合的方法
是的,Java 在集合类中提供了一个名为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);
}
}输出
[1124, 3654, 9945, 7854]
将集合对象转换为不可变对象后,如果您尝试添加元素,它将产生运行时异常 −
示例
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);
//Adding elements to the immutable set
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