【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 にまとめてあります