JavaコレクションフレームワークHashMapの使用方法

7801 ワード

Mapの分類:
  • Hashtable:最下位はハッシュテーブルデータ構造であり、nullキーとnull値を格納することはできません.このセットはスレッド同期です.jdk 1.0効率低
  • HashMap:下位層はハッシュ・テーブル・データ構造であり、null値とnullキーを使用できます.このセットは同期しません.jdk 1.2は効率が高い.
  • TreeMap:最下位はツリーデータ構造です.スレッドが同期しません.mapセット内のキーをソートするために使用できます.

  • 拡張:LinkedHashMap:挿入順に並べ替えられたHashMapを持つHashMapのサブクラスです.マッピングにキーを再挿入すると、挿入順序は影響を受けません.
    HashMapの方法
     void clear() 
                           。 
     Object clone() 
                  HashMap        :         。 
     boolean containsKey(Object key)trueboolean containsValue(Object value)true。 
     Set<Map.Entry<K,V>> entrySet() 
                             collection   。 
     V get(Object key) 
                                 ,          ,           ,    null。 
     boolean isEmpty() 
                       -true。 
     Set<K> keySet() 
                           set   。 
     V put(K key, V value)void putAll(Map<? extends K,? extends V> m) 
                                 ,                               。 
     V remove(Object key) 
                             ,     。 
     int size() 
                      -      。 
     Collection<V> values() 
                          collection   。 
    
  • get()は、getメソッドの戻り値によって、キーが存在するか否かを判断することができる.nullを返すことで
  • を判断する.
  • put()要素を追加し、同じキーの値を上書きします.putメソッドは、上書きされる前の値を返します.最初に追加した場合nullが返されます.

  • HashMapを取り出す方法:
  • Set keySet:setが反復器を備えているため、map内のすべてのキーをSetセットに格納します.すべてのキーを取り出してgetメソッドに従います.各キーに対応する値を取得します.
  •         Set<Integer> mapset = map.keySet(); //    
            for(int k : mapset){
                System.out.println(map.get(k)); //    ,   
            }
    
  • Set>entrySet:セット内のマッピング関係をsetセットに格納します.この関係のデータ型は、Map.Entry
  • です.
            for(Map.Entry<Integer, String> en : map.entrySet()){
                System.out.println(en.getKey() + ":" + en.getValue());
            }
    
  • Collection values:mapのすべての値を取り出します.無秩序!(辞書の値のみを取り出す)
  •         for(Object obj : map.values()){
                System.out.println(obj);
            }