Map インターフェイス

Map はキーと対応する値をセットで得たい時に使用するインターフェイスです。
・キー は 一意 のオブジェクトでなければなりませんが、値の重複は可能 です。
・キーのnullは1つのみ、値のnullは複数あってもOK。ただし、後述するTreeMapクラスについてはキーへのnullは許容されません。

■Map インターフェイスの実装
Mapはインターフェースなので実装しなければ、使用できません。
よく見かける実装クラスにはHashMap クラス、TreeMapクラス、LinkedHashMap クラスがあります。それぞれのクラスの特徴は下記の通りです。
・HashMap クラスでは、キーの順序は保証されない。
・TreeMapクラス では、キーの順序はソート順になる、キーへのnullは許容されない。
・LinkedHashMap クラスでは、キーの順序は挿入順になる。

下記実装例では、HashMap クラス、TreeMapクラス、LinkedHashMap クラスに同じキーと値のセットを格納し、出力しています。出力結果をみると、TreeMapクラス はソート順、LinkedHashMap クラスは挿入順で出力されていて、HashMap クラスでは順序は保証されていないことがわかります。
実装例:
			
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Main {

	public static void main(String[] args) {
		
		//HashMapクラス(キーの順序は保証されない)
		HashMap < String, String > HashMapData = new HashMap < String, String >(); 
		HashMapData. put( "0003", "DDD"); 
		HashMapData. put( "0001", "BBB"); 
		HashMapData. put( "0000", "AAA"); 
		HashMapData. put( "0002", "CCC");
		
		MapTest TestHashMap = new MapTest();
		TestHashMap.methodA("HashMap",HashMapData);
			
		//TreeMapクラス(キーの順序はソート順になる)
		TreeMap < String, String > TreeMapData  = new TreeMap< String, String >(); 
		TreeMapData. put( "0003", "DDD"); 
		TreeMapData. put( "0001", "BBB"); 
		TreeMapData. put( "0000", "AAA"); 
		TreeMapData. put( "0002", "CCC");
		
		MapTest TestTreeMap = new MapTest();
		TestTreeMap.methodA("TreeMap",TreeMapData);
	
		//LinkedHashMapクラス(キーの順序は挿入順になる) 
		LinkedHashMap < String, String > LinkedMapData = new LinkedHashMap < String, String >(); 
		LinkedMapData. put( "0003", "DDD"); 
		LinkedMapData. put( "0001", "BBB"); 
		LinkedMapData. put( "0000", "AAA"); 
		LinkedMapData. put( "0002", "CCC");

		MapTest TestLinkMap = new MapTest();
		TestLinkMap.methodA("LinkedHashMap",LinkedMapData);
	}
}

class MapTest{
	void methodA( String msg ,Map< String,String > map ){
		System. out. println(msg);
		Set < String > keys = map. keySet();
		//キーと値を出力
		for( String key : keys){
			System. out. println( key+ ": "+ map . get(key )+ " "); 
		}
	}
}
実行結果:

HashMap
0002: CCC
0003: DDD
0000: AAA
0001: BBB
TreeMap
0000: AAA
0001: BBB
0002: CCC
0003: DDD
LinkedHashMap
0003: DDD
0001: BBB
0000: AAA
0002: CCC

コメント

タイトルとURLをコピーしました