程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 中Map 的用法詳解

Java 中Map 的用法詳解

編輯:關於JAVA

Java 中Map 的用法詳解。本站提示廣大學習愛好者:(Java 中Map 的用法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java 中Map 的用法詳解正文


Map簡介

將鍵映照到值的對象。一個映照不克不及包括反復的鍵;每一個鍵最多只能映照到一個值。此接口代替 Dictionary 類,後者完整是一個籠統類,而不是一個接口。

 Map 接口供給三種collection 視圖,許可以鍵集、值集或鍵-值映照關系集的情勢檢查某個映照的內容。映照次序 界說為迭代器在映照的 collection 視圖上前往其元素的次序。某些映照完成可明白包管其次序,如 TreeMap 類;另外一些映照完成則不包管次序,如HashMap 類。

注:將可變對象用作映照鍵時必需非分特別當心。當對象是映照中某個鍵時,假如以影響 equals 比擬的方法更改了對象的值,則映照的行動將是不肯定的。此項制止的一種特別情形是不許可某個映照將本身作為一個鍵包括。固然許可某個映照將本身作為值包 含,但請非分特別當心:在如許的映照上 equals 和 hashCode 辦法的界說將不再是明白的。

Map 接口:

 Map供給key到value的映照。一個Map中不克不及包括雷同的key,每一個key只能映照一個value。Map接口供給3種聚集的視圖,Map的內容可以被看成一組key聚集,一組value聚集,或許一組key-value映照。   

 Hashtable類     

Hashtable繼續Map接口,完成一個key-value映照的哈希表。任何非空(non-null)的對象都可作為key或許value。    

添加數據應用put(key,  value),掏出數據應用get(key),這兩個根本操作的時光開支為常數。Hashtable經由過程initial  capacity和load  factor兩個參數調劑機能。平日缺省的load  factor  0.75較好地完成了時光和空間的平衡。增年夜load  factor可以節儉空間但響應的查找時光將增年夜,這會影響像get和put如許的操作。  

應用Hashtable的簡略示例以下,將1,2,3放到Hashtable中,他們的key分離是”one”,”two”,”three”:  

    Hashtable numbers = new Hashtable();  
    numbers.put(“one”, new Integer(1));  
    numbers.put(“two”, new Integer(2));  
    numbers.put(“three”, new Integer(3));  

  要掏出一個數,好比2,用響應的key:  

    Integer n = (Integer)numbers.get(“two”);  
    System.out.println(“two = ” + n);  

 因為作為key的對象將經由過程盤算其散列函數來肯定與之對應的value的地位,是以任何作為key的對象都必需完成hashCode和equals辦法。hashCode和equals辦法繼續自根類Object,假如你用自界說的類看成key的話,要相當當心,依照散列函數的界說,假如兩個對象雷同,即obj1.equals(obj2)=true,則它們的hashCode必需雷同,但假如兩個對象分歧,則它們的hashCode紛歧定分歧,假如兩個分歧對象的hashCode雷同,這類景象稱為抵觸,抵觸會招致操作哈希表的時光開支增年夜,所以盡可能界說好的hashCode()辦法,能加速哈希表的操作。     

假如雷同的對象有分歧的hashCode,對哈希表的操作會湧現意想不到的成果(等待的get辦法前往null),要防止這類成績,只須要切記一條:要同時復寫equals辦法和hashCode辦法,而不要只寫個中一個。

 Hashtable是同步的。  

 HashMap類  

HashMap和Hashtable相似,分歧的地方在於HashMap長短同步的,而且許可null,即null  value和null  key。,然則將HashMap視為Collection時(values()辦法可前往Collection),其迭代子操作時光開支和HashMap的容量成比例。是以,假如迭代操作的機能相當主要的話,不要將HashMap的初始化容量設得太高,或許load  factor太低。   

 WeakHashMap類  

WeakHashMap是一種改良的HashMap,它對key實施“弱援用”,假如一個key不再被內部所援用,那末該key可以被GC收受接管。

 以上就是對Java Map接口的引見,進修java編程的同窗可以參考下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved