有沒有將 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)
廣告