有沒有將 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