HashMapのArrayListに要素を追加するには?
HashMap<String, ArrayList<Item>> Items = new HashMap<String, ArrayList<Item>>();
HashMapのArrayListに要素を追加するには?
HashMap<String, ArrayList<Item>> Items = new HashMap<String, ArrayList<Item>>();
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);
}
}
まず、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
典型的なコードは、明示的なメソッドを作成してリストに追加し、追加時にオンザフライで 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);
}