JavaにおけるMapコレクションの特性と実装方法

一、Mapコレクションの特徴:

1.Mapコレクションは二重のコレクションであり、一つの要素が二つの値(キー、値)を含みます;

2.Mapコレクションの要素において、キーと値のデータ型は同じでも異なっても構いません;

3.Mapコレクションの要素において、キーは重複できませんが、値は重複可能です;

4.Mapコレクションの要素において、キーと値は一対一で対応しています;

二、HashMapコレクションの特徴:

1.HashMapコレクションの実装はハッシュテーブルであり、検索速度が非常に高速です;

2.HashMapコレクションは順序付けされていないコレクションであり、要素の格納順序と取り出し順序が一致しない可能性があります;

三、LinkedHashMapの特徴:

1.LinkedHashMapコレクションの実装はハッシュテーブル+リンクリストにより、イテレーション順序が保証されます;

2.LinkedHashMapコレクションは順序付けされたコレクションであり、要素の格納順序と取り出し順序が一致します;

四、Mapコレクションの格納と取得

public class MapExample {
    public static void main(String[] args) {
        //Mapオブジェクトの作成
        Map<String, String> dataMap = new HashMap<String,String>();
        //mapに要素を追加
        dataMap.put("tanaka", "yamada");
        dataMap.put("suzuki", "sato");
        dataMap.put("sato", "tanaka");
        //Map内のすべてのキーと値の対応関係を取得
        Set<Map.Entry<String,String>> entrySet = dataMap.entrySet();
       //Setコレクションの反復
        Iterator<Map.Entry<String,String>> iterator =entrySet.iterator();
        while(iterator.hasNext()){
            //各対応関係を取得
            Map.Entry<String,String> pair = iterator.next();
            //各対応関係から対応するキーを取得
            String key = pair.getKey();
            //各対応関係から対応する値を取得
            String value = pair.getValue();
            System.out.println(key+"="+value);
        }
    }
}

五、HashMapでのカスタムオブジェクトの格納

public class Person {

private String fullName;

private int years;

//コンストラクタの作成、省略

//getter、setterメソッドの作成、省略

//toStringメソッドの作成、省略

}
public class HashMapDemo {
    public static void main(String[] args) {
        //1、hashmapコレクションオブジェクトの作成
        Map<Person,String> locationMap = new HashMap<Person,String>();
        
        //2、要素の追加
        locationMap.put(new Person("佐藤",30), "東京");
        locationMap.put(new Person("鈴木",25), "大阪");
        locationMap.put(new Person("田中",28), "名古屋");
        locationMap.put(new Person("高橋",35), "福岡");
        locationMap.put(new Person("伊藤",22), "札幌");
        
        //3、要素の取得。キーから値を取得する方式
        Set<Person> keys = locationMap.keySet();    
                 for(Person currentKey : keys){
            String currentValue = locationMap.get(currentKey);
            System.out.println(currentKey.toString()+"....."+currentValue);
        }
        
        //3、要素の取得。キーと値のペア方式
        Set<Map.Entry<Person, String>> entrySet = locationMap.entrySet();
        for (Map.Entry<Person, String> mapping : entrySet) {
            Person currentKey = mapping.getKey();
            String currentValue = mapping.getValue();
            System.out.println(currentKey.toString()+"....."+currentValue);
        }
    }
}

①HashMapにカスタムオブジェクトを格納する場合、オブジェクトをキーとして使用する際は、オブジェクトの一意性を保証するために、オブジェクトのhashCodeとequalsメソッドをオーバーライドする必要があります(忘れた場合は、HashSetにカスタムオブジェクトを格納する内容を復習してください)。

②Mapに格納されたキーと取り出し順序を一致させる必要がある場合は、LinkedHashMapコレクションを使用して格納できます。

タグ: Java map HashMap LinkedHashMap コレクション

7月31日 06:52 投稿