一、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コレクションを使用して格納できます。