Storing and Retrieving ArrayList values from hashmap

后端 未结 7 2524
感动是毒
感动是毒 2020-12-13 13:27

I have a hashmap of the following type

HashMap> map=new HashMap>();    
<         


        
7条回答
  •  既然无缘
    2020-12-13 13:43

    Iterator it = map.entrySet().iterator();
    while (it.hasNext()) {
         Map.Entry pairs = (Map.Entry)it.next();
    
         if(pairs.getKey().equals("mango"))
         {
            map.put(pairs.getKey(), pairs.getValue().add(18));
         }
    
         else if(!map.containsKey("mango"))
         {
            List ints = new ArrayList();
            ints.add(18);
            map.put("mango",ints);
         }
    
         it.remove(); // avoids a ConcurrentModificationException
    }
    

    EDIT: So inside the while try this:

    map.put(pairs.getKey(), pairs.getValue().add(number))
    

    You are getting the error because you are trying to put an integer to the values, whereas it is expected an ArrayList.

    EDIT 2: Then put the following inside your while loop:

    if(pairs.getKey().equals("mango"))
    {
        map.put(pairs.getKey(), pairs.getValue().add(18));
    }
    
    else if(!map.containsKey("mango"))
    {
         List ints = new ArrayList();
         ints.add(18);
         map.put("mango",ints);
     }
    

    EDIT 3: By reading your requirements, I come to think you may not need a loop. You may want to only check if the map contains the key mango, and if it does add 18, else create a new entry in the map with key mango and value 18.

    So all you may need is the following, without the loop:

    if(map.containsKey("mango"))
    {
        map.put("mango", map.get("mango).add(18));
    }
    
    else
    {
        List ints = new ArrayList();
        ints.add(18);
        map.put("mango", ints);
    }
    

提交回复
热议问题