国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java2中的Collections框架--Map

2019-11-18 15:16:24
字體:
供稿:網(wǎng)友

  public interface java.util.Map {
  
    //Altering Methods
     public Object put(Object key, Object value);  
     public Object remove(Object key);       
     public void putAll(java.util.Map);      
     public void clear(); 
  
    //Querying Methods
     public Object get(Object key);     
     public int size();          
     public boolean isEmpty();         
     public boolean containsKey(Object);     
     public boolean containsValue(Object);     
     public boolean equals(Object);        
  
    //Viewing Methods
     public java.util.Set keySet();         //Gets keys
     public java.util.Collection values();      //Gets values
     public java.util.Set entrySet();        //Gets mappings
  
     public static interface java.util.Map.Entry {  //a map-entry (single key/value pair)
       public Object getKey();          //returns current entry key
       public Object getValue();         //returns current entry value
      public Object setValue(Object value);   
   public boolean equals(Object);      
   public int hashCode();             }
  }
  Map接口提供了方便易用的方法,通過這些方法可以查詢、查看、修改當前Map的內(nèi)容。注重對于Map接口的keySet()方法返回一個Set,Set是Collection接口的一個擴展,包含不重復的一組對象。因為Map中的key是不可重復的,所以得到所有key的keySet()方法返回一個Set對象。Map接口本身還包含了一個Map.Entry接口,一個Map.Entry就是Map中的一個要害字/值對。Map接口中的entrySet()方法就返回了一個集合對象,其中每一個元素都實現(xiàn)了Map.Entry接口。Map接口的get(Object key),put(Object key,Object value),和remove(Object key)方法都有同一個問題。他們的返回類型都是Object,當返回null時,可以猜測為調(diào)用那個方法前那個key不存在。但是只有在null不答應作為Map的值時可以這樣猜測。所有Map接口的通用實現(xiàn)都答應null作為key或者value,這就說當返回一個null值,就可以意味著很多事情。只是因為通用實現(xiàn)答應null值,你不能下那個映射有null值的結(jié)論。假如你確知沒有null值,那返回null值就意味著調(diào)用那個方法前,映射里并沒有那個鍵。否則,你必須調(diào)用containsKey(Object key)來看看那個Key是否存在。
  
  Hashtable
  
  java.util.Hashtable實現(xiàn)了Map接口,在Hashtable中使用key對象的hashCode()作為對應的對象的相對存儲地址,以便實現(xiàn)根據(jù)要害字快速查找對象的功能。所以只有一個實現(xiàn)了hashCode()和equals()方法的對象才可作為Hashtable的key。null值不能作為要害字或值。
  public class java.util.Hashtable extends Dictionary implements Cloneable, Map, Serializable {
  
     //Hashtable constrUCtors
     //construct a default Hashtable with default capacity and load of 0.75
     public Hashtable();          
     //construct a Hashtable with passed capacity and default load of 0.75
     public Hashtable (int initialCapacity);
     //construct Hashtable with passed capacity and load
     public Hashtable(int initialCapacity, float load);
     //construct Hashtable with passed mapping
     public Hashtable(Map);         
    
     //Hashtable specific methods
     //checks if Object is in Hashtable
     public boolean contains(Object);    
     //returns Enumeration of elements in Hashtable
     public Enumeration elements();     
     //returns Enumeration of keys in hashtable
     public Enumeration keys();       
     //creates shallow copy of Hashtable(structure copied, but not key/values)
     public Object clone();         
     //PRints out key/value pairs of Hashtable elements
     public String toString();       
     //reorganizes all elements in Hashtable, and increases Hashtable capacity
     protected void rehash();        
    
     //get Value from passed in key
     public Object get(Object);       
     //insert key/value pair
     public Object put(Object key, Object value);   
  
  }
  Hashtable是Java 2集合框架推出之前的一個老的工具類,在新的Java 2集合框架下,已經(jīng)被HashMap取代。Hashtable和HashMap的區(qū)別主要是前者是同步的,后者是快速失敗機制保證不會出現(xiàn)多線程并發(fā)錯誤(Fast-Fail)。在初始化一個Hashtable時,可以指定兩個參數(shù):初始容量、負荷,這兩個參數(shù)強烈的影響著Hashtable的性能。容量是指對象的個數(shù),負荷是指散列表中的實際存儲的對象個數(shù)和容量的比率。假如初始容量太小,那么Hashtable需要不斷的擴容并rehash(),而這是很耗時的;假如初始容量太大,又會造成空間的浪費。負荷則相反,負荷太小會造成空間浪費,負荷太大又會耗時(因為這會造成較多的要害字的散列碼重復,Hashtable使用一個鏈接表來存儲這些重復散列碼的對象)。容量的缺省值是11,負荷的缺省值是0.75,一般情況下你都可以使用缺省值來生成一個Hashtable。另外,在Hashtable中的大部分的方法都是同步的。
  
  HashMap
  
  HashMap基本實現(xiàn)了Map接口的全部方法。方法的簽名大家看上面的Map接口。這兒主要說說幾個Map接口中的方法。
  按照集合框架的實現(xiàn),哈希表是單鏈表作為元素的數(shù)組,有著同樣索引值的兩個或更多入口被一起鏈結(jié)到單鏈表中。哈希表聲明如下:
    private Entry[] table;
  組件類型Entry是Map.Entry接口的實現(xiàn),Map.Entry聲明于Map接口內(nèi)。下邊是Map.Entry接口的簡化實現(xiàn):
    private static class Entry implements Map.Entry{
      int hashCode;
      Object key;
      Object value;
      Entry next;
  
      Entry(int hashCode,Object key,Object value,Entry next){
        This.hashCode=hashCode;
        This.key=key;
        This.value=value;
        This.next=next;
  }
  public Object getKey(){
    return key;
  }
  public Object getValue(){
    return value;
  }
  public Object setValue(Object value){
    Object oldValue=this.value;
    This.value=value;
    Return oldValue;
  }
  }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 双流县| 金川县| 上高县| 清苑县| 临武县| 河曲县| 建阳市| 蚌埠市| 临夏县| 孙吴县| 合阳县| 石台县| 宁南县| 亚东县| 大港区| 珲春市| 琼海市| 曲阳县| 安吉县| 定陶县| 玉环县| 西安市| 分宜县| 湘西| 广平县| 财经| 龙里县| 肇州县| 石首市| 崇信县| 土默特右旗| 安塞县| 景谷| 和林格尔县| 土默特右旗| 贵州省| 大宁县| 义马市| 漳平市| 八宿县| 伽师县|