Я пытаюсь решить задачу программирования. Здесь пользователь должен прочитать n строк в консоли и напечатать строку, содержащую максимальное количество слов.
При попытке преобразовать List в HashMap
возникают проблемы с преобразованием.
Ошибка:
prog.java:33: error: incompatible types: HashMap<String,Integer> cannot be converted to Entry<String,Integer>
Map.Entry<String,Integer> entry = (HashMap<String,Integer> ) printResult.entrySet();
Мой код выглядит следующим образом:
import java.io.*;
import java.util.*;
import java.util.LinkedList;
class GFG {
public static void main (String[] args) {
int i=0,counter=0;
String[] strArray= new String[10];
Scanner sn = new Scanner(System.in);
HashMap<String, Integer> hm = new HashMap<String, Integer>();
while(sn.nextLine()!=null)
{
strArray[i]=sn.nextLine();
String temp=strArray[i];
int j=0;
while(j<temp.length())
{
if(temp.charAt(j)==' ')
{
counter++;
}
j++;
}
hm.put(temp,counter);
i++;
}
GFG g1=new GFG();
HashMap<String, Integer> printResult = g1.sortByValue(hm);
Map.Entry<String,Integer> entry = (HashMap<String,Integer> ) printResult.entrySet();
System.out.println(entry.getKey());
}
public HashMap<String, Integer> sortByValue(HashMap<String, Integer> hm)
{
// Create a list from elements of HashMap
List<Map.Entry<String, Integer> > list =
new LinkedList<Map.Entry<String, Integer> >(hm.entrySet());
// Sort the list
Collections.sort(list, new Comparator<Map.Entry<String, Integer> >() {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2)
{
return (o1.getValue()).compareTo(o2.getValue());
}
});
Map<String,Integer> printResult = (HashMap<String, Integer>) list.getLast();
System.out.println(printResult);
return printResult;
}
}