1. 程式人生 > >JAVA-初步認識-常用對象API(集合框架-Map集合-hashmap存儲自定義對象)

JAVA-初步認識-常用對象API(集合框架-Map集合-hashmap存儲自定義對象)

自定義 。。 成對 ... 都差不多 post 哈希表 equals方法 例子

一.

把前面講到的三個集合使用一下。

交代一下需求,學生是鍵,歸屬地是值。到底歸屬地是不是String,有待商榷。如果歸屬地比較簡單,用天津,上海....這些就是字符串。如果歸屬地比較復雜,北京的海澱的...,建議把歸屬地封裝成對象。為什麽?歸屬地封裝成對象以後,它裏面包含著省字段,市字段,區字段.....這些字段你想單獨地去獲取,歸屬地對象自己最清楚,所以這個時候要進行封裝。記住,一旦事物變復雜了,封裝對象。將復雜事物簡單化。如果就是簡答的,那就直接字符串上,不用封裝對象。

技術分享圖片

在第一個例子中,演示的是hashmap集合。前面已經講述了map集合,這裏討論的是map子類的集合?無論什麽類型的集合,都是一個容器,對不同類型的存儲元素進行各種操作。不同集合間對元素進行的操作種類大多都差不多,增,刪,查...

技術分享圖片

在本例中進行取元素,可以有兩種方法,要麽keyset,要麽。。。。先演示keyset。

set集合裏面裝的是鍵類型,

技術分享圖片

技術分享圖片

其實這裏書寫的方式挺奇怪的,距離來看,lisi,38和北京三個屬性間在添加入集合時,書寫方式比較奇怪,沒看懂。

哈希是無序的,輸出結果無序。

現在修改程序,對於zhaoliu這個對象,修改一下歸屬地,多添加一次。

技術分享圖片

技術分享圖片

輸出結果如上,怎麽解決。如果你認為鍵相同,是不是會出現值覆蓋情況,它能全列是因為鍵不相同。如果想保證鍵相同,必須要提供鍵判斷相同的依據。

哈希表結構要保證兩個方法,一說hashset都明白,一說hashmap就糊塗了。既然這個鍵是存到了hashmap中(哈希表),它要具備hashcode和equals方法,具備它自己內容,所以在person類裏面,要做一個復寫動作。(集合這一塊,代碼貌似都是分開寫的

) 有人說存的是student,但是student繼承了person,student裏面沒有任何屬性,直接在person裏面寫就好了。現在在person類中,添加了hashcode和equals方法,再看輸出結果。

上海的歸屬地對象,被鐵嶺覆蓋了。

技術分享圖片

現在提個小事情,如果不寫截圖中註釋的兩句,而是截圖中最後一句。它們是一個意思。

技術分享圖片

JAVA-初步認識-常用對象API(集合框架-Map集合-hashmap存儲自定義對象)