日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设置Collection 或 Map 只读

發布時間:2024/9/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设置Collection 或 Map 只读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有的時候創建一個具有只讀屬性的Collection 或 Map,會帶來很多方便。Collections 類可以幫我們實現這個目的,它有一個方法,參數為原本的容器,返回的容器是具有只讀屬性的容器。可以應用于Collection、List、Map、Set。

下面是關于Collections 類的具體方法:

static < T > Collection< T > unmodifiableCollection(Collection< ? extends T> c)
??????返回指定 collection 的不可修改視圖。
static < T > List< T > unmodifiableList(List< ? extends T> list)
?????? 返回指定列表的不可修改視圖。
static < K,V> Map< K,V> unmodifiableMap(Map< ? extends K,? extends V> m)
??????返回指定映射的不可修改視圖。
static < T > Set< T > unmodifiableSet(Set< ? extends T> s)
??????返回指定 set 的不可修改視圖。
static < K,V> SortedMap< K,V> unmodifiableSortedMap(SortedMap< K,? extends V> m)
??????返回指定有序映射的不可修改視圖。
static < T > SortedSet< T > unmodifiableSortedSet(SortedSet< T > s)
?????? 返回指定有序 set 的不可修改視圖。

下面是一個實現的例子:設置為只讀屬性后,如果你執行其他添加或者刪除動作,你將在運行時期得到一個 java.lang.UnsupportedOperationException 異常。

import java.util.*; /** 設置只讀Collection */ public class ReadOnly {public static void main(String[] args) {String[] strArray = {"Hello","World"};List<String> list = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(strArray)));// list.add("Jas");// list.remove(1);System.out.println(list);Integer[] intArray = {1,2,3,4,5};Set<Integer> set = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(intArray)));//set.add(6);System.out.println(set);Map<String,Integer> map1 = new HashMap<>();map1.put("one",1);map1.put("two",2);Map<String,Integer> map2 = Collections.unmodifiableMap(map1);// map2.put("three",3);System.out.println(map2);} }

對特定類型的“不可修改的”方法調用并不會在編譯期進行檢查,但是在轉換完成后,任何會改變容器內元素內容的操作都會報異常。所以在將容器設為只讀屬性之前,必須填入有意義的數據。不過此方法允許你保留一份可以修改的容器,作為類的private 屬性,然后通過某個方法調用返回該容器的“只讀”的引用。這樣你就可以修改容器中的內容,而別人只能讀取。

總結

以上是生活随笔為你收集整理的设置Collection 或 Map 只读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。