Map用于保存具有映射關系的數據(key-vlaue)。Map的key不允許重復,即同一個Map對象的任何兩個key通過equals方法比較總是返回false
Map中包含了一個keySet()方法,用于返回Map所以key組成的Set集合。
Map集合與Set集合元素的存儲形式很像,如Set接口下有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet等實現類和子接口,而Map接口下則有HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap等實現類和子接口。
Map的value非常類似List:元素與元素之間可以重復,每個元素可以根據索引(key)來查找。
Map有時也稱為字典,或關聯數組。
Map接口中定義如下方法:
Map接口提供了大量的實現類,如HashMap和Hashtable等,以及HashMap的子類LinkedHashMap,還有SortedMap子接口及該接口的實現類TreeMap。下面將進行詳細介紹。
Map中包括一個內部類:Entry。該類封裝了一個key-value對,Entry包含三個方法:
可以把Map理解成一個特殊的Set,只是該Set里包含的集合元素是Entry對象,而不是普通對象。
HashMap和Hashtable都是Map接口的實現類,Hashtable是一個古老的Map實現類,它從JDK1.0起就有,它包含兩個煩瑣的方法:elements()(類似于Map接口定義的values()方法)和keys()(類似于Map接口定義的keySet()方法),現在很少使用這兩種方法。
兩點區別:
由于HashMap里的可以不能重復,所以HashMap里最多只有一對key-value值為null,但可以有無數多項key-value對的value為null。
HashMap重寫了toString()方法方法總是返回如下格式的字符串:{key1 = value1,key2 = value2..}
HashMap、Hashtable判斷兩個key相等的標準是:兩個key通過equasl方法比較返回ture,兩個key的hashCode值相等。
HashMap有一個子類:LinkedHashMap,它也是雙向鏈表來維護key-value對的次序,該鏈表定義了迭代順序,該迭代順序與key-value對的插入順序保持一致。
LinkedHashMap可以避免對HashMap、Hashtable里的key-value對進行排序(只要插入key-value對時保持順序即可)。同時又可避免使用TreeMap所增加的成本。
LinkedHashMap需要維護元素的插入順序,因此性能略低于HashMap的性能,但在迭代訪問Map里的全部元素時將有很好的性能,因為它以鏈表來維護內部順序。
Properties類是Hashtable類的子類,用于處理屬性文件(例如Windows操作平臺上的ini文件)。Properties類可以把Map對象和屬性文件關聯起來,從而可以把Map對象中的key-value對寫入屬性文件,也可以把屬性文件中的屬性名=屬性值加載到Map對象中。由于屬性文件里的屬性名、屬性值只能是字符串類型,所以Properties里的key、value都是字符串類型,該類提供了如下三個方法來修改Properties里的key、value值。
提供兩個讀、寫屬性文件的方法:
---恢復內容結束---
新聞熱點
疑難解答