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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP