【Java】 配列を空マップに変換する方法

この記事ではJavaで配列を空マップに変換する方法を解説します。
配列を空マップに変換する
Javaの配列を空マップに変換するには、配列を順次取り出す必要があります。
for文など使用して順次、配列の要素を取り出せばよいです。
ただし、Mapのキー値は重複できないため、配列の値に重複する値が存在する場合は、一つにまとめられる形となりますので、配列の数と、Mapのキー値の数が一致しません。
String[] str = {"test","test2","test2","test3","test3","test4"};
Map<String, Object> Map = new HashMap<String, Object>();
// for文で配列から値を取り出し、Mapのキー値として格納、
// 値にはカラをセット
for (String WKstr: str ) {
// 取り出した値をputでキー値に格納する
Map.put(WKstr,"");
}
System.out.println(Map);
// 実行結果
{test4=, test2=, test3=, test=}
キー値が重複する場合、名称を追加して、配列を空マップに変換する
Mapの要素数と、配列の数を同一としたい場合は、配列に重複する値が存在する場合は一致しませんが、特定の名称を付与し、キー値を重複させないなどすれば、一致させることができます。
例えば、「_2」などをキー値につけて重複を回避させたりすることで実装可能です。
String[] str = {"test","test2","test2","test2","test3","test4"};
Map<String, Object> Map = new HashMap<String, Object>();
// for文で配列から値を取り出し、Mapのキー値として格納、
// 値にはカラをセット
for (String WKstr: str ) {
int i = 2;
// キー値が重複した場合、_2を付与してキー値をセットする
if (Map.containsKey(WKstr)) {
WKstr = WKstr + "_" + i;
// 付与後も重複する場合、重複しなくなるまで加算する
while (true) {
if (Map.containsKey(WKstr)) {
i++;
WKstr = WKstr + "_" + i;
// 重複しなくなった場合処理を抜ける
} else {
break;
}
}
}
Map.put(WKstr,"");
}
System.out.println(Map);
// 実行結果
{test4=, test2=, test2_2_3=, test3=, test=, test2_2=}
配列数をMapのキー値の数が一致することが確認できました。

Javaの記事の一覧はJava にまとめてあります
