怎么确保一个集合不能被修改?
我們很容易想到用final關(guān)鍵字進(jìn)行修飾,我們都知道final關(guān)鍵字可以修飾類,方法,成員變量,final修飾的類不能被繼承,final修飾的方法不能被重寫,final修飾的成員變量必須初始化值,如果這個(gè)成員變量是基本數(shù)據(jù)類型,表示這個(gè)變量的值是不可改變的,如果說這個(gè)成員變量是引用類型,則表示這個(gè)引用的地址值是不能改變的,但是這個(gè)引用所指向的對象里面的內(nèi)容還是可以改變的。
那么,我們怎么確保一個(gè)集合不能被修改?首先我們要清楚,集合(map,set,list…)都是引用類型,所以我們?nèi)绻胒inal修飾的話,集合里面的內(nèi)容還是可以修改的。
下面提供一個(gè)例子:
可以看到:我們用final關(guān)鍵字定義了一個(gè)map集合,這時(shí)候我們往集合里面?zhèn)髦?#xff0c;第一個(gè)鍵值對1,“1”;我們再修改后,可以把鍵為1的值改為 "3",說明我們是可以修改map集合的值的。
?
?
?
那我們應(yīng)該怎么做才能確保集合不被修改呢?
我們可以采用Collections包下的unmodifiableMap方法,通過這個(gè)方法返回的map,是不可以修改的。他會(huì)報(bào) java.lang.UnsupportedOperationException錯(cuò)。
Collections.unmodifiableMap();
報(bào)錯(cuò):java.lang.UnsupportedOperationException錯(cuò)
?
?
同理:Collections包也提供了對list和set集合的方法。
Collections.unmodifiableList()
例子:使用了Collections.unmodifiableList() 保證集合不可以修改
?
?
Collections.unmodifiableSet() 保證set集合不被修改
總結(jié)
以上是生活随笔為你收集整理的怎么确保一个集合不能被修改?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Problem01 不死神兔
- 下一篇: js文本框设置必填项_input必填_j