Skip to main content

Java Method to sort a Map based on Values

It very frequent that a programmer needs the below snippet to sort the map based on values rather than keys:

private static HashMap sortByValues(HashMap map) {
       List list = new LinkedList(map.entrySet());
       // Defined Custom Comparator here
       Collections.sort(list, new Comparator() {
            public int compare(Object o2, Object o1) {
               return ((Comparable) ((Map.Entry) (o1)).getValue())
                  .compareTo(((Map.Entry) (o2)).getValue());
            }
       });
       HashMap sortedHashMap = new LinkedHashMap();
       for (Iterator it = list.iterator(); it.hasNext();) {
              Map.Entry entry = (Map.Entry) it.next();
              sortedHashMap.put(entry.getKey(), entry.getValue());
       }
       return sortedHashMap;
}

Comments

Popular posts from this blog

Solution Repeated String Hacker Rank

Challenge: Lilah has a string,  , of lowercase English letters that she repeated infinitely many times. Given an integer,  , find and print the number of letter  a 's in the first   letters of Lilah's infinite string. For example, if the string   and  , the substring we consider is  , the first   characters of her infinite string. There are   occurrences of  a  in the substring. Function Description Complete the  repeatedString  function in the editor below. It should return an integer representing the number of occurrences of  a  in the prefix of length   in the infinitely repeating string. repeatedString has the following parameter(s): s : a string to repeat n : the number of characters to consider Input Format The first line contains a single string,  . The second line contains an integer,  . Constraints For   of ...