【发布时间】:2019-03-08 11:08:36
【问题描述】:
我正在尝试解决一个编程难题。在这里,用户应该从控制台读取 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;
}
}
【问题讨论】:
-
您的
entrySet()返回一个Set<Map.Entry<String,Integer>>。 -
遇到了什么问题,为什么要尝试将其转换为 hashmap?
-
就目前而言,您的应用程序甚至没有到达关键部分
-
@Stultuske 我正在练习地图实现。因此,使用 Map 的实现。
-
@XtremeBaumer:非常感谢您的指导。
标签: java string collections linked-list hashmap