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<Integer> ints = new ArrayList<Integer>(); 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<Integer> ints = new ArrayList<Integer>(); 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<Integer> ints = new ArrayList<Integer>(); ints.add(18); map.put("mango", ints); }