JavaのMapインターフェース

5955 ワード

目次
1、Map集合の特徴
2、Mapインターフェースでの常用方法
3、Map集合方式keySet方法
4、Map集合EntrySetオブジェクト使用方法遍歴
5、HashMapセットはカスタムオブジェクトと巡回を記憶します。
6、Linked HashMapの特徴
7、Hashtableの特徴
Mapセットは、Collectionセットとは異なり、Mapセットはキー(key)/値(value)のマッピングに基づいており、Collection内のセットは、要素が孤立して存在し、集合中の記憶要素にそれぞれの要素を用いて格納される。Mapのセットは、要素がペアになっています。各要素はキーと値の2つの部分から構成されています。キーで対応する値を探すことができます。Collection内の集合を単列集合と呼び、Map内の集合を双列集合と呼ぶ。なお、Mapのセットは重複キーを含んではいけません。値は重複します。各キーは一つの値しか対応できません。
1、Map集合の特徴
  • 各要素はペアで存在し、キーと値の2つの部分から構成されており、キーによって対応する値
  • を見つけることができる。
  • キー(key値)は重複してはいけません。値は重複してもいいです。一つのvalue値は多くのkey値と対応関係を形成してもいいです。各建物は最大1つの値
  • にしかマッピングできません。
  • 二つのMapインターフェースの重要な実装クラス:HashMap類、Linked HashMap類
  • 2、Mapインターフェースでの常用方法
  • get(Object key):指定キーに対応する値を取得する
  • put(K key,V value):指定されたキーを値に対応してセットに追加し、指定されたキーがセットにない場合は、このキーに対応する値がなく、nullに戻り、指定されたキーをセットに追加し、セットに指定されたキーがセットに存在する場合は、セットに対応するキーの値(置換前の値)を返します。指定キーに対応する値を指定の新値
  • に置き換える。
  • Remove(Object key):指定されたキーから要素を削除し、削除された要素の値を返します。
    public static void main(String[] args)
    {
        //  Map  
        Map M = new HashMap<>();
        //    
        M.put("  ","Tom");
        M.put("  ","Tim");
        M.put("  ","Rik");
        System.out.println(M);
    
        //     key     value
        System.out.println(M.get("  "));
    
        //  key    ,   key   value 
        String val = M.remove("  ");
        System.out.println(val);
        System.out.println(M);
    
        //  Map     ,   key      value , key      ,  null
        System.out.println(M.put("  ","TTT"));  //Tom
        System.out.println(M);
    }
    3、Map集合方式keySet方法
    Mapセットのエルゴードは、キーの値を探す方法によって実現されます。すなわち、要素の中のキーを通じて、キーに対応する値を取得します。ステップは以下の通りです。
  • は、Mapセットの方法keySetを呼び出し、すべてのキー(key値)をセット
  • に格納する。
  • はセットを巡回し、セット内のすべての要素(Map内のキー)
  • を取得する。
  • は、Mapセットget方法を呼び出し、キー(key値)によって値(value値)
  • を取得する。
    public static void main(String[] args)
    {
        //  Map       
        Map M = new HashMap<>();
        M.put(1,"a");
        M.put(2,"b");
        M.put(3,"c");
    
        //1.    Map       keySet,     (key )   Set   
        Set S = M.keySet();
    
        //2.   Set   ,    Set          ( Map    (key ))
        Iterator it = S.iterator();
        while (it.hasNext())
        {
            //  Map   
            Integer key = it.next();
            //3.   Map    get   ,   (key )    (value )
            String value = M.get(key);
            System.out.println(key + "=" + value);
        }
    }
    もちろん、強化forを使うこともできます。
    for(String key : map.keySet())
    {
        Integer value = map.get(key);
        System.out.println(key+"="+value);
    }
    4、Map集合EntrySetオブジェクト使用方法遍歴
    Mapクラスの設計の時に、ネストインターフェースを提供しました。Enttryはキーの対応関係をオブジェクトにパッケージ化しました。つまりキーの値はオブジェクトに対して、Mapの集合を遍歴する時に、キーの値のペアのオブジェクトから対応するキーと対応する値を取得できます。
    EnttryはMapの内部インターフェースであり、Mapのサブクラスの内部クラスによって実現され、MapインターフェースのentrySet方法を使ってEnttryオブジェクトを返すことができます。
    interface Map{
        interface Entry{      
    
        }
    }
    Entryオブジェクトの特徴:
  • Entryは、Mapインターフェースで提供される静的内部ネストインターフェース
  • である。
  • 関連方法     getKey()メソッド:Entryオブジェクトのキーを取得します。     getValue()メソッド:Entryオブジェクトの値を取得します。     entrySet()方法:Mapセット内のすべてのキーペアのオブジェクトを返すために、Setセットで
  • に戻ります。
    Map集合エルゴード方式のentrySet方法:
  • は、集合中のマッピング関係オブジェクトEntrySetをSetセットに格納するMapセット方法entrySetを呼び出す。
  • 反復Setセット
  • が取り出したセットの要素は、マッピング関係オブジェクト
  • である。
  • マッピング関係オブジェクト方法でget Ket、getValueからキーペア
  • を取得する。
    public static void main(String[] args)
    {
        //  Map       
        Map M = new HashMap<>();
        M.put(1,"a");
        M.put(2,"b");
        M.put(3,"c");
        //1.   Map      entrySet()             Entrty    Set  :Set >
        Set> S = M.entrySet();
        //2.   Set   
        Iterator> it = S.iterator();
        while (it.hasNext())
        {
            //3.     Set             
            Map.Entry entry = it.next();
            //4.           getKet, getValue      
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "=" + value);
        }
    }
    5、HashMapセットはカスタムオブジェクトと巡回を記憶します。
    HashMapセットを使用して、カスタムオブジェクトを保存します。このカスタムオブジェクトはキーとしてもいいし、値としてもいいです。
    コードインスタンス(ここではPersonクラスを省略します)
    public static void main(String[] args)
    {
         //  Map           
         Map M = new HashMap<>();
         M.put(1,new Person("Tom",18));
         M.put(2,new Person("Tim",19));
         M.put(3,new Person("Rik",20));
         //      for    
         //1.  keySet       
        for(Integer key : M.keySet())
        {
            Person value = M.get(key);
            System.out.println(key + "=" + value);
        }
        //2.  entrySet        
        for(Map.Entry entry : M.entrySet())
        {
            Integer key = entry.getKey();
            Person value = entry.getValue();
            System.out.println(key + "=" + value);
        }
    }
  • HashMapにカスタムオブジェクトを格納する場合、カスタムオブジェクトがキーとして存在する場合、オブジェクトの一意性を保証するためには、オブジェクトのhashCodeとequals方法を書き換える必要がある
  • Mapに保存されているkeyと取り出した順序が一致することを保証するためには、Linked HashMapのセットを使用して
  • を格納することができる。
    6、Linked HashMapの特徴
  • Linked HashMapはHashMapを継承し、反復の順序を保証することができる。
    public static void main(String[] args) {
    	LinkedHashMap link = new LinkedHashMap();
    	link.put("1", "a");
    	link.put("13", "a");
    	link.put("15", "a");
    	link.put("17", "a");
    	System.out.println(link);
    }
    7、Hashtableの特徴
  • は、Mapインターフェース実現クラス
  • である。
  • の底のデータの結果のハッシュ表、特徴はハshMapと同じ
  • です。
  • Hashtableはスレッドセキュリティセットであり、動作速度が遅い
  • hashtable運命はVectorと同じで、JDK 1.2から、より先進的なhashMapによって
  • に取って代わられます。
  • Hashtableはnull値、nullキー(HashMapはnull値、nullキー)
  • を格納することができません。
  • hashtableのサブクラスProptiesは、よく使われている
  • です。