-5

Java でハッシュマップから文字列の配列を作成したいですか?

私のHashMapはこのようなものです

HashMap<String, String> param = new HashMap<String, String>();
                 param.put("A", "2");
                 param.put("B", "3");
                 param.put("C", "2");

このような文字列の配列を作成したい。

String[] list = {"A 1", "A 2","B 1","B 2","B 3","C 1","C 2"};

編集:

インプットとアウトプットの関係。キー A の値が 2 の場合、出力には A 1 と A 2 が含まれている必要があります。同様に、キー B の値が 3 の場合、出力には B 1 B 2 B3 が含まれている必要があります。

私がやったことは

public class test {
    public static void main(String[] args) {
        HashMap<String, String> param = new HashMap<String, String>();
        param.put("A", "2");
        param.put("B", "3");
        param.put("C", "2");

        String[] list = new String[param.size()];
        int i = 0;
        int a= Integer.parseInt(param.get("A"));
        for (int j = 1;j<= a;j++) {
            list[i] = ("a" +j);
            System.out.println(list[i]);
            i++;

        }

    }

私はJavaが初めてです。これを行う方法を教えてください。ありがとう

4

3 に答える 3

2

これを試して

    HashMap<String, String> param = new HashMap<String, String>();
    param.put("A", "2");
    param.put("B", "3");
    param.put("C", "2");

    String[] list = new String[7];// It is better to use List other than an array
    int i = 0;
    for (Map.Entry<String, String> entry : param.entrySet()) {
        int lim=Integer.parseInt(entry.getValue());
       for(int j=0;j<lim;j++){
          list[i]=entry.getKey()+" "+String.valueOf(j+1);
           i++;
       }
    }

本当にここで配列を使用したい場合。次の方法を試すことができます

  HashMap<String, String> param = new HashMap<String, String>();
    param.put("A", "2");
    param.put("B", "3");
    param.put("C", "2");
    int sum=0;
    for (Map.Entry<String, String> entry : param.entrySet()) {
        sum+=Integer.parseInt(entry.getValue());
    }
    String[] list = new String[sum];
    int i = 0;
    for (Map.Entry<String, String> entry : param.entrySet()) {
        int lim=Integer.parseInt(entry.getValue());
       for(int j=0;j<lim;j++){
          list[i]=entry.getKey()+" "+String.valueOf(j+1);
           i++;
       }
    }
于 2013-08-16T07:47:30.483 に答える
0

さて、次のようなもの:

String[] list = new String[param.size()];
int i = 0;
for (Map.Entry<String, String> entry : param.entrySet()) {
    list[i] = entry.getKey() + " " + entry.getValue();
    ++i;
}
assert i == list.length;
Arrays.sort(list);

しかし、あなたが欲しいと思いますMap<String, Set<Integer>>


なぜだめですか:

SortedSet<String> param;

void putParam(String key, String addableValue) {
    param.add(key + " " + addableValue);
}

putParam("A". "1");
putParam("B", "1");
putParam("A". "2");
putParam("B", "1");

String[] list = param.toArray(new String[param.size()]);
// [ "A 1", "A 2", "B 1" ]

ジェネリック型付けの場合、toArray には String の配列オブジェクトが必要です。その配列に正しいサイズを指定すると、その配列が戻り値として再利用されますlist

于 2013-08-16T07:35:48.620 に答える