我正在尝试对具有从高到低的值的结构的哈希图进行排序。
我在下面创建了一个函数来对数据进行排序。
public static void SortDataHighToLow (Map <String, Integer> UnsortedMap){
List <Integer> list = new ArrayList(UnsortedMap.keySet());
Collections.sort(list,new Comparator <Integer>(){
@Override
public int compare(Integer arg0, Integer arg1) {
return arg0-arg1;
}
});
Map <String, Integer> sortedMap = new LinkedHashMap<>();
for (Integer keys: list){
sortedMap.put(UnsortedMap.toString(), keys);
}
System.out.println(sortedMap);
}
我收到以下错误:
线程“主”中的异常java.lang.ClassCastException:无法将类java.lang.String强制转换为类java.lang.Integer(java.lang.String和java.lang.Integer在加载程序“ bootstrap”的模块java.base中')
我认为我的错误是由上述的for()引起的,导致我无法读取Key值。
我应该做些什么调整?
谢谢您的帮助。
这是做这项工作的比较器:
但是要注意,这违反了可比合同