JAVA-初步認識-常用對象API(集合框架-Map集合-hashmap存儲自定義對象)
一.
把前面講到的三個集合使用一下。
交代一下需求,學生是鍵,歸屬地是值。到底歸屬地是不是String,有待商榷。如果歸屬地比較簡單,用天津,上海....這些就是字符串。如果歸屬地比較復雜,北京的海澱的...,建議把歸屬地封裝成對象。為什麽?歸屬地封裝成對象以後,它裏面包含著省字段,市字段,區字段.....這些字段你想單獨地去獲取,歸屬地對象自己最清楚,所以這個時候要進行封裝。記住,一旦事物變復雜了,封裝對象。將復雜事物簡單化。如果就是簡答的,那就直接字符串上,不用封裝對象。
在第一個例子中,演示的是hashmap集合。前面已經講述了map集合,這裏討論的是map子類的集合?無論什麽類型的集合,都是一個容器,對不同類型的存儲元素進行各種操作。不同集合間對元素進行的操作種類大多都差不多,增,刪,查...
在本例中進行取元素,可以有兩種方法,要麽keyset,要麽。。。。先演示keyset。
set集合裏面裝的是鍵類型,
其實這裏書寫的方式挺奇怪的,距離來看,lisi,38和北京三個屬性間在添加入集合時,書寫方式比較奇怪,沒看懂。
哈希是無序的,輸出結果無序。
現在修改程序,對於zhaoliu這個對象,修改一下歸屬地,多添加一次。
輸出結果如上,怎麽解決。如果你認為鍵相同,是不是會出現值覆蓋情況,它能全列是因為鍵不相同。如果想保證鍵相同,必須要提供鍵判斷相同的依據。
哈希表結構要保證兩個方法,一說hashset都明白,一說hashmap就糊塗了。既然這個鍵是存到了hashmap中(哈希表),它要具備hashcode和equals方法,具備它自己內容,所以在person類裏面,要做一個復寫動作。(集合這一塊,代碼貌似都是分開寫的
上海的歸屬地對象,被鐵嶺覆蓋了。
現在提個小事情,如果不寫截圖中註釋的兩句,而是截圖中最後一句。它們是一個意思。
JAVA-初步認識-常用對象API(集合框架-Map集合-hashmap存儲自定義對象)