JAVA-初步認識-常用對象API(集合框架-重點方法entryset演示圖解)
一.
對於上一節的操作而言,這裏還有另外一種做法,相對而言,有一點麻煩。
從剛才的動作,總結出一個原理。map集合沒有叠代器,但是我們可以把map轉換成有叠代器的集合,比如說set。
這是為什麽呢?為什麽不返回arrylist,這是拿所有的鍵,鍵是唯一的,所以返回的應該是set集合,保證元素的唯一性。
接下來,在API當中,還有一個方法也是返回set集合,(這裏的set有什麽特殊含義麽?)
現在用它來完成取出所有元素的方式。keyset大家比較容易明白,裏面裝的都是鍵。但是,entryset是返回此映射所包含的映射關系的set視圖,映射關系是什麽意思呢?映射關系,代表這鍵和值之間的對應,這裏面存儲的是對應關系。map.entry是鍵值關系類型,一會兒解釋為什麽這麽寫。對應關系裏面包含鍵和值。
叠代器後面要有泛型(不太懂)。it.next返回的是結婚證,set中的泛型我不管,但是叠代器中的泛型和set中的要一致。
一現在有點糾結,有了結婚證,怎麽拿這裏面的鍵和值呢?結婚證裏面本身包含著鍵和值,由鍵和值組成。取結婚證裏的鍵和值,結婚證自己最清楚。
點擊一下map.entry<K,V>這個結婚證,方法摘要中顯示都能取的出來,而且還能設置。隨便可以改變某一個鍵的值。
結果顯示沒有問題,這是第二種取出方法。畫個圖解釋一下,
entrySet得到的結婚證什麽樣呢?它把鍵和值封裝成一個對象,這是一個元素,存了四個元素。這裏面的一個元素就是map,entry<key.value>對象。
很多人對map.entry<key,value>有點迷糊,對於下圖的寫法有點搞不清。
這種操作以前見過,
myentry是接口,隨著外部接口加載而加載。
先說map接口,然後往下看是嵌套類。嵌套類是內置類,是靜態的interface,
點進去看,是正在封閉接口map當中。你見過靜態註釋麽?只有成員才有,所以它是個成員。
為什麽要把它定義在裏面,放在外面不行麽?MyEntry是一個包含鍵和值的內容,它是鍵和值的映射關系對象,只有現有這種map映射,才存在著關系。而它把關系封裝成對象,關系在訪問map中的鍵和值。那就是外部規則中有內部規則,內部規則直接訪問外部規則中的內容。什麽點什麽,全部都是嵌套的。
內部類本身是種封裝形式,但是如果它能對外使用的話,就暴露出去。
接口中的靜態接口
JAVA-初步認識-常用對象API(集合框架-重點方法entryset演示圖解)