26

HashMapのArrayListに要素を追加するには?

    HashMap<String, ArrayList<Item>> Items = new HashMap<String, ArrayList<Item>>();
4

5 に答える 5

44
HashMap<String, ArrayList<Item>> items = new HashMap<String, ArrayList<Item>>();

public synchronized void addToList(String mapKey, Item myItem) {
    List<Item> itemsList = items.get(mapKey);

    // if list does not exist create it
    if(itemsList == null) {
         itemsList = new ArrayList<Item>();
         itemsList.add(myItem);
         items.put(mapKey, itemsList);
    } else {
        // add if item is not already in list
        if(!itemsList.contains(myItem)) itemsList.add(myItem);
    }
}
于 2012-08-27T00:02:00.793 に答える
8

まず、ArrayList をマップに追加する必要があります。

ArrayList<Item> al = new ArrayList<Item>();

Items.add("theKey", al); 

次に、次のように Map 内にある ArrayLIst に項目を追加できます。

Items.get("theKey").add(item);  // item is an object of type Item
于 2012-08-26T23:44:05.837 に答える
5

典型的なコードは、明示的なメソッドを作成してリストに追加し、追加時にオンザフライで ArrayList を作成することです。リストが一度だけ作成されるように、同期に注意してください。

@Override
public synchronized boolean addToList(String key, Item item) {
   Collection<Item> list = theMap.get(key);
   if (list == null)  {
      list = new ArrayList<Item>();  // or, if you prefer, some other List, a Set, etc...
      theMap.put(key, list );
   }

   return list.add(item);
}
于 2012-08-26T23:51:06.447 に答える