HashMap is very useful when a counter is required.
1 2 3 4 5 6 7 8
| HashMap<String, Integer> countMap = new HashMap<String , Integer>();
if (countMap.keySet().contains(a)) { countMap.put(a, countMap.get(a) + 1); } else { countMap.put(a, 1); }
|
loop through hashmap
1 2 3 4 5 6 7 8 9 10
| Iterator it = mp.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getKey() + " = " + pairs.getValue()); }
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + " , Value = " + entry.getValue()); }
|
2 print hashmap
1 2 3 4 5 6 7 8 9 10
| public static void printMap(Map mp) { Iterator it = mp.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getKey() + " = " + pairs.getValue()); it.remove(); } }
|
3 sort hashmap by value
The following code example take advantage of a constructor of TreeMap here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class ValueComparator implements Comparator<String> { Map<String, Integer> base; public ValueComparator(Map<String, Integer> base) { this.base = base; } public int compare(String a, String b) { if (base.get(a) >= base.get(b)) { return -1; } else { return 1 ; } } }
|
1 2 3 4 5 6 7 8 9 10 11
| HashMap<String, Integer> countMap = new HashMap<String, Integer>();
countMap.put("a", 10); countMap.put("b", 20);
ValueComparator vc = new ValueComparator(countMap);
TreeMap<String, Integer> sortedMap = new TreeMap<String, Integer>(vc); sortedMap.putAll(countMap); printMap(sortedMap);
|
There are different ways of sorting HashMap, this way has been voted the most in stackoverflow