Sorting a HashMap By Values Without Losing Duplicates
Join the DZone community and get the full member experience.
Join For FreeThe below method sorts a HashMap by values without removing duplicates. It works for <String,String> but it can be modified accordingly for other types:
private LinkedHashMap sortMapByValuesWithDuplicates(Map passedMap) { List mapKeys = new ArrayList(passedMap.keySet()); List mapValues = new ArrayList(passedMap.values()); Collections.sort(mapValues); Collections.sort(mapKeys); LinkedHashMap sortedMap = new LinkedHashMap(); Iterator valueIt = mapValues.iterator(); while (valueIt.hasNext()) { Object val = valueIt.next(); Iterator keyIt = mapKeys.iterator(); while (keyIt.hasNext()) { Object key = keyIt.next(); String comp1 = passedMap.get(key).toString(); String comp2 = val.toString(); if (comp1.equals(comp2)) { passedMap.remove(key); mapKeys.remove(key); sortedMap.put((String) key, (String) val); break; } } } return sortedMap; }
From http://e-blog-java.blogspot.com/2011/12/sorting-hashmap-by-values-without.html
Opinions expressed by DZone contributors are their own.
Comments