HashMap更新ArrayList

Tha*_*yen 7 java arraylist hashmap

我刚开始学习使用HashMap并阅读java教程,但我遇到了麻烦.

我正在尝试更新HashMap中的List,但是我想获取该密钥的列表,是否有办法更新密钥的特定列表而不必制作... 5个不同的列表并更新它们?

 HashMap<String, ArrayList<String>> mMap = new HashMap<String, ArrayList<String>>();
        ArrayList<String> list = new ArrayList<String>();
        mMap.put("A", list);
        mMap.put("B", list);
        mMap.put("C", list);
        mMap.put("D", list);

        Iterator iter = mMap.entrySet().iterator();

        if (mMap.containsKey("A"))
        {   
            Map.Entry mEntry = (Map.Entry) iter.next();
            list.add("test");
            mMap.put("A",list);
            System.out.println(mEntry.getKey() + " : " + mEntry.getValue());
        }
        else if (mMap.containsKey("B"))
        {   
            Map.Entry mEntry = (Map.Entry) iter.next();
            list.add("entry");
            mMap.put("B",list);
            System.out.println(mEntry.getKey() + " : " + mEntry.getValue());
        }
Run Code Online (Sandbox Code Playgroud)

Tud*_*dor 14

你可以使用类似的东西:

mMap.get("A").add("test");
mMap.get("B").add("entry");
Run Code Online (Sandbox Code Playgroud)

  • 当它错过了将相同的List放入每个地图条目的事实时,如何获得3个upvotes?:-) (4认同)

use*_*300 6

  1. 就像@Tudor所说,使用mMap.get("A").add("foo");

  2. 您将相同的精确列表放入每个映射条目中.你的初始行应该是

    mMap.put("A", new ArrayList());
    mMap.put("B", new ArrayList()); 
    ...
    mMap.put("Z", new ArrayList());
Run Code Online (Sandbox Code Playgroud)

另外,写一个即时检查的方法

public synchronized void myAdd(String key, String value) {
   List<String> there = mMap.get(key);
   if (there == null) {
      there = new ArrayList<String>();
      mMap.put(key, there);
   }
   there.add(value);
}
Run Code Online (Sandbox Code Playgroud)