0

次のコードを使用して、ハッシュマップ コンテンツを arraylist に保存しています。

HashMap jediSaber = new HashMap();  
ArrayList<HashMap> valuesList = new ArrayList();

for(int i = 0; i< 4;i++) {
    jediSaber.put("white","white_name"+i);  
    jediSaber.put("blue","blue_name"+i);   
    valuesList.add(i, jediSaber);           
    System.out.println("list ontent:"+i+":"+valuesList.get(i).values());
}

    `   

出力は次のとおりです。

              list content:0:[blue_name0, white_name0]
              list content:1:[blue_name1, white_name1]
              list content:2:[blue_name2, white_name2]
              list content:3:[blue_name3, white_name3]

以下のコードでarraylistの中身を外側に表示しようとすると、

System.out.println("list content:");
for(int i = 0;i<valuesList.size();i++){ 
    System.out.println("list:"+i+":"+valuesList.get(i).values());
}

次の出力が表示されます。

             list content:0:[blue_name3, white_name3]
             list content:1:[blue_name3, white_name3]
             list content:2:[blue_name3, white_name3]
             list content:3:[blue_name3, white_name3]

私の問題は、ハッシュマップの配列リストの内容を表示する必要があることです。

私は第二部で何かを逃したと思います。この小さな問題を解決するのを手伝ってくれる人はいますか?

前もって感謝します!!..

4

3 に答える 3

1

これはHashMap毎回同じものをに追加していArrayListます:

valuesList.add(i, jediSaber);

HashMap内で毎回新しいを作成しforて追加します。

List<HashMap<String, String>> valuesList =
    new ArrayList<HashMap<String, String>>();

for (int i = 0; i < 4; i++)
{
    HashMap<String, String> m = new HashMap<String, String>();
    m.put("white", "white_name" + i);
    m.put("blue",  "blue_name"  + i);
    valuesList.add(m);
}

System.out.println(valuesList.toString());
于 2012-10-03T08:38:03.697 に答える
0

次のように、ループjediSaber内に引っ張ってみてください。for

for(int i = 0; i < 4; i++) {
    Map<String, String> jediSaber = new HashMap<String, String>();

パラメータ化valuesListも行う必要があります。

List<Map<String, String>> valuesList = new ArrayList<Map<String, String>>();

PSadd(i, jediSaber)インデックス引数で呼び出す必要はありませんvaluesList.add(jediSaber)。同じ効果があります。

于 2012-10-03T08:43:42.463 に答える
0
        List<Map> valuesList = new ArrayList();
        for (int i = 0; i < 4; i++) {
            Map<Object, Object> jediSaber = new HashMap<>();
            jediSaber.put("white", "white_name" + i);
            jediSaber.put("blue", "blue_name" + i);
            valuesList.add(jediSaber);
            Set<Entry<Object, Object>> entrySet = jediSaber.entrySet();
            for (Entry<Object, Object> entry : entrySet) {
                System.out.println(entry.getKey() + "-" + entry.getValue());
            }
        }
于 2012-10-03T08:48:37.050 に答える