如何在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)
廣告