一、常用的Map操作類
1、使用HashMap
Map也支持泛型語法,泛型的Map實例:
建立Map操作對象時,可以使用泛型語法指定鍵與值的類型。上圖鍵使用String,值也使用String類型。要建立鍵值對應,可以使用put()方法,第一個自變量是鍵,第二個自變量是值。對於Map而言,鍵不會重復,判斷鍵是否重復是根據hashCode()與equals(),作為鍵的對象必須操作hashCode()與equals()方法。若要指定鍵取回對應的值,則使用get()方法。
在HashMap中建立鍵對值應之后,鍵是無序的,可以在執行結果中看到。如果想讓鍵是有序的,則可以使用TreeMap。
2、使用TreeMap
如果使用TreeMap建立鍵值對應,則鍵的部分將會排序,條件是作為鍵的對象必須操作Comparable接口,或者是在創建TreeMap時指定操作Comparator接口的對象。例如:
由於String有操作Comparable接口,因此看到的結果是根據鍵的首字母來排序的(從A到Z的順序)。
創建了StringComparator類實現了Comparator<String>接口,並重寫了compare()方法。
創建TreeMap時指定StringComparable實例,使得鍵的首字母按照從Z到A的順序排序。
3、使用properties
Properties類繼承自HashTable,HashTable操作了Map接口,所以Properties也有Map的行為。雖然也可以使用put()方法設定鍵值對應,get()方法指定鍵取回值,不過一般常用Properties的setProperties()指定字符串類型的鍵值,getProperties()取回指定字符串類型的鍵對應的字符串類型的值,通常稱為屬性名稱與屬性值。例如:
以上的load()方法結束后,會自動關閉InputStream實例。如果命令行自變量指定了person.properties的路徑位置,則執行結果為鍵對應的值。
二、訪問Map鍵值
上圖中使用的是HashMap實例,所以執行結果是無序的。若是改為TreeMap實例,則執行結果就是有序的。









