如何在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