怎么確保一個集合不能被修改


我們很容易想到用final關鍵字進行修飾,我們都知道

final關鍵字可以修飾類,方法,成員變量,final修飾的類不能被繼承,final修飾的方法不能被重寫,final修飾的成員變量必須初始化值,如果這個成員變量是基本數據類型,表示這個變量的值是不可改變的,如果說這個成員變量是引用類型,則表示這個引用的地址值是不能改變的,但是這個引用所指向的對象里面的內容還是可以改變的

那么,我們怎么確保一個集合不能被修改?首先我們要清楚,集合(map,set,list…)都是引用類型,所以我們如果用final修飾的話,集合里面的內容還是可以修改的。

我們可以做一個實驗:

可以看到:我們用final關鍵字定義了一個map集合,這時候我們往集合里面傳值,第一個鍵值對1,1;我們再修改后,可以把鍵為1的值改為100,說明我們是可以修改map集合的值的。

那我們應該怎么做才能確保集合不被修改呢?
我們可以采用Collections包下的unmodifiableMap方法,通過這個方法返回的map,是不可以修改的。他會報 java.lang.UnsupportedOperationException錯。

同理:Collections包也提供了對list和set集合的方法。
Collections.unmodifiableList(List)
Collections.unmodifiableSet(Set)
--------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM