web-dev-qa-db-fra.com

Comment ajouter un élément dans ArrayList dans HashMap

Comment ajouter un élément dans ArrayList dans HashMap?

    HashMap<String, ArrayList<Item>> Items = new HashMap<String, ArrayList<Item>>();
13
lunar
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);
    }
}
28
Tobias N. Sasse

Je sais, c'est une vieille question. Mais juste pour être complet, la version lambda.

Map<String, List<Item>> items = new HashMap<>();
items.computeIfAbsent(key, k -> new ArrayList<>()).add(item);
16
pan

Vous devez d'abord ajouter une ArrayList à la carte

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

Items.add("theKey", al); 

alors vous pouvez ajouter un élément à l'ArrayLIst qui est à l'intérieur de la carte comme ceci:

Items.get("theKey").add(item);  // item is an object of type Item
8
Tulains Córdova

Le code typique consiste à créer une méthode explicite à ajouter à la liste et à créer ArrayList à la volée lors de l'ajout. Notez la synchronisation afin que la liste ne soit créée qu'une seule fois!

@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);
}
5
user949300