Mapインタフェース(二列集合)

9525 ワード

Mapコレクションの概要:
  • Mapの集合要素はペアで存在し、各要素はキー(key)と値(value)で構成される.
  • Mapセットの要素、keyとvalueのデータ型は同じでも異なってもよい.
  • Mapの集合の中の要素、keyは繰り返してはいけなくて、valueは繰り返してもいいです;
  • Map集合の要素、keyとvalueは1つ1つ対応しています.

  • java.util.HashMap集合implements MapインタフェースHashMap集合の特徴:
  • HashMap集合の下位層はハッシュテーブルである.クエリーの速度が特に速い.
  • JDK1.8以前:配列+一方向チェーンテーブル;
  • JDK1.8以降:配列+一方向チェーンテーブル/赤黒ツリー(チェーンテーブルの長さが8を超える):クエリーの速度を上げる;
  • hashMap集合は不要な集合であり、記憶要素と取り出し要素の順序が一致しない可能性がある.

  • java.util.linkedHashMap集合extends HashMap集合linkedHashMap集合の特徴:
  • linkedHashMap集合の下位層はハッシュテーブル+チェーンテーブル(反復の順序を保証する)
  • である.
  • linkedHashMap集合は秩序ある集合であり、記憶要素と取り出し要素の順序は一致している.

  • Mapインタフェースの一般的な方法:
    public V remove(Object key);//              , Map     ,         ;
    key  :v       ;
    key   :v  null;
    public V put(K key,V value);             Map   ;
       :V
            ,key   ,    null;
            ,key  ,     value  map    value,      value ;
    public V get(Object key);      , Map         ;
       :
    key  :     value ;
    key   :  null;
    boolean containsKey(Object key)truefalse

    Mapコレクションを巡る
           :        Map      :
    	set<K> keyset()            Set  ;1.  Map      keySet(), Map     key   ,     set   ;
    		2.  set  ,  Map       key;
    		3.  Map      get(key),  key  value;
    	    :
    		Set<String> set = map.keySet();
    		Iterator<String> it = set.iterator();
    		while(it.hasNext()){
         
    		String key = set.next();
    		Integer value = map.get(key);
    		System.out.println(key + "="+ value);
    		//       foreach  Set  。
    		}
           :  Entry    
    Map      :
    	Set <Map.Entry<K,V>> entrySet()               Set  ;1.  Map      entrySet(), Map     Entry     ,     Set   ;
    		3.  Entry      getKey() getValue()     ;
    	  :
    	Set<Map.Entry<String,Integer>> it = set.iterator();
    	while(it.hasNext()){
         
    	Map.Entry<String,Integer> entry = it.next();
    	String key = entry.getKey();
    	Integer Value = entry.getValue();
    	System.out.pringln(Key + ":" + Value);
    	//     for-each     ;
    	}
    		
    

    HashMapは、カスタムタイプのキー値Mapセット保証keyが一意であることを格納します.keyの要素としてhashCodeメソッドとequalsメソッドを書き換え、keyが一意であることを保証する必要があります.LinkedHashMap集合:秩序java.util.linkedHashMap extends HashMap Mapインタフェースのハッシュテーブルとリンクリストが実装され、予知可能な反復順序を有する.下位原理:ハッシュテーブル+チェーンテーブル(レコード要素の順序)Hashtable集合:キーも値も空にできない;java.util.Hashtable集合implements MapインタフェースHashtable:下位はハッシュテーブルであり、スレッドの安全な集合であり、単一スレッドの集合であり、速度が遅い;HashMap:下位はハッシュテーブルであり、スレッドの不安全な集合であり、マルチスレッドの集合であり、速度が速い;HashMap集合(以前に学んだすべての集合):null値、nullキーを格納できます.Hashtable集合、null値、nullキーを格納できません.Hashtableのサブクラスproperties集合はIOストリームと結合した唯一の集合です.