Java 按值排序hashmap
我想把地图分类。我有字符串作为键,整数作为值 例如:Java 按值排序hashmap,java,hashmap,Java,Hashmap,我想把地图分类。我有字符串作为键,整数作为值 例如: key value "1,3" 40 "1,5" 20 "2,5" 10 "2,10" 30 Output: "2,5" 10 "1,5" 20 "2,10" 30 "1,3" 40 我尝试了下面的代码,但它不工作。你能帮帮我吗 treemap = treemap = new TreeMap<String, Integer>(); while((lin
key value
"1,3" 40
"1,5" 20
"2,5" 10
"2,10" 30
Output:
"2,5" 10
"1,5" 20
"2,10" 30
"1,3" 40
我尝试了下面的代码,但它不工作。你能帮帮我吗
treemap = treemap = new TreeMap<String, Integer>();
while((line = br.readLine()) !=null )
{
int sum=0;
sum = //something
String keys = xCordinate + "," + yCordinate; //getting it
treemap.put(keys, sum);
}
testMap(treemap );
}
public static void testMap(Map <String,Integer> map)
{
for(Integer value1 : map.values())
{
String keys = map.get(value1).toString(); //error in this line
System.out.println(keys + " " + value1);
}
}
使用Java,您可以按如下方式对hashmap进行排序:
public LinkedHashMap sortHashMapByValuesD(HashMap passedMap) {
List mapKeys = new ArrayList(passedMap.keySet());
List mapValues = new ArrayList(passedMap.values());
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap sortedMap = new LinkedHashMap();
Iterator valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = passedMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)){
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((String)key, (Double)val);
break;
}
}
}
return sortedMap;
}
这只是一个开始示例,这种方法更有用,因为它对HashMap进行排序并保留重复的值。当您调用
map.get(something)
时,something
必须与映射的键的类型相同(String
),但是您正在传递一个整数
代码
public static void testMap(Map <String,Integer> map)
value1
是一个整数,因此出现异常。什么错误?你能添加堆栈跟踪吗?@GiovanniBotta StackTrace added,你能纠正语法和格式吗?(Integer value1:map.)的行错误,第一行没有意义,并且您的花括号不匹配。另外,您能否更清楚地说明您正在尝试执行的操作?如何对地图进行排序?你能给出一个简单的输入/预期输出的例子吗?@GiovanniBotta编辑这个答案有误导性。他为什么要把int转换成string?你知道他想干什么吗?在给出解决方案之前,请让我们先把问题做得更好。我希望我的答案能回答您的疑问,不要指望有人能帮您解决问题。仅供参考:这种行为并不适用于所有map实现。HashMap返回null。Treemap(本例)ClassCastException,这是因为排序映射实现的性质。键必须强制转换为正确的类型,因为映射使用键的自然顺序来检索值。
public static void testMap(Map <String,Integer> map)
String keys = map.get(value1).toString(); //error in this line
--