HashMapの使い方

hashmapは思いのほか、よく使います。色々な理由であまり多用していいものでもないですが、キー値で情報を集約しグルーピングしたりするのに使ってます。listと組み合わせて使ったりもします。

  • 定義、要素の追加、削除、キー判定、繰り返し(ループ)
import java.util.Map;
import java.util.HashMap;

// 変数定義
Map<String, String> map = new HashMap<String, String>();

// 要素の追加
map.put("001","ABC");

// 要素の削除
map.remove("001");

// キー判定
if (map.containsKey("001")) {
// 要素が存在する場合
}

// 繰り返し処理(ループ)
for(String strKey : map.keySet()) {
String strValue = map.get(strKey);
}
  • ソート( Arrays.sort )
import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;

// 変数定義
Map<String, String> map = new HashMap<String, String>();

// 要素の追加
map.put("001","ABC");

// キーセットを取得し、キーによる並び替えを行う。
Object[] mapKeyList = map.keySet().toArray();
Arrays.sort(mapKeyList);

// 繰り返し処理(ループ)
for(String strKey : map.keySet()) {
String strValue = map.get(strKey);
}
  • ソート( TreeMap )
import java.util.Map;
import java.util.TreeMap;

// 変数定義
Map<String, String> map = new TreeMap<String, String>();

// 要素の追加
map.put("001","ABC");

// 繰り返し処理(ループ)
for(String strKey : map.keySet()) {
String strValue = map.get(strKey);
}

※TreeMapはキーを自動的にソートしてくれる為、単純キーソートでは使用しています。

※Mapのソートについては、Comparatorを使って複数キー、値による並び替えもできますが、処理が視覚的にわかりにくくなる為、私が使うときは、リストに変換して並び替える等を行っています。通常業務レベルのプログラムではkeyによるソートがあれば十分だと思っています。複数のキーがある場合は、お手本としてはよくありませんが、文字列と記号で結合してキー文字列にして1つのキーにする方が簡易でわかりやすい場合がありますのでそうしています。

※ListからMapに変換ついては「ListとMapの相互変換」を参照ください。

※Streamを使ったソートついては「Stream(Java8以降)の使い方」を参照ください。