I have a HashMap which needs to get sorted by value and not key, in descending order. To get the hashmap, I determine if the given input line is an sql statement, find its complexity and then create a hashmap with key as the sql statement and value as the complexity. Though I have written the right code, I suppose, to sort the HashMap, the output does not show a sorted hashmap. Here's the code:
public <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list = new LinkedList<>(map.entrySet());
Collections.sort( list, new Comparator<Map.Entry<K, V>>() {
    @Override
    public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
        return (o1.getValue()).compareTo(o2.getValue());
    }
});
Map<K, V> result = new LinkedHashMap<>();
for (Map.Entry<K, V> entry : list) {
    result.put(entry.getKey(), entry.getValue());
}
return result;
}
public void method2() throws Exception{
try (FileInputStream inputStream = new FileInputStream(fileName);
        Scanner sc = new Scanner(inputStream, "UTF-8")){
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
           // System.out.println("THIS IS METHOD 2 EXECUTING");
            SQLChecker checker = new RegexSQLChecker();
            if(checker.isSQLStatement(line)){
                SQLFreq sqlf=new PrintFreqMap();
              //Trim the line to start with a SQL keyword
            String line1=   sqlf.trimString(line);
                 //*******FIND_QUERY_COMPLEXITY*******
                ComplexityScore cs=new ComplexityScorer();
                   int complexity= cs.findComplexity(line1);
                  map1 = new HashMap<String, Integer>();
                  map1.put(line1,complexity);
                  Map<String, Integer> sorted_map4 = sqlf.sortByValue(map1);
                  if(outputFormat.equals("txt"))
                  o.writeMapToTextFile(map1, p2);
                  if(outputFormat.equals("csv"))
                  o.writeHashMapToCsv(map1,p5);
                  sqlf.printMap(sorted_map4);
                  if(outputFormat.equals("html"))
                        o.writeMapToHTML(sorted_map4,p7); 
            }
        }
        //SQLFreq sqlf=new PrintFreqMap();
}
}
public void printMap(Map<String, Integer> map)
{
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println("Key :" + entry.getKey() + " Value : "
            + entry.getValue());
    }
}
enter code here
 
    