java排序HashMap<String,String>,整数作为字符串
我正在尝试对HasMap ArrayList进行排序,以便我的listview按值排序,但我没有得到它。
基本上,我有几个键,其中一个是“type”,它保存像"1", "4", "3",....
这样的值
我想按这个键“type”对列表进行排序,但是我得到的是"1", "11", "2"
,而不是"1", "2", "11"
我正在尝试使用以下代码对其进行排序:
Collections.sort(myList, new Comparator<HashMap<String, String>>() {
public int compare(HashMap<String,
String> mapping1,HashMap<String, String> mapping2) {
return mapping1.get("type").compareTo(mapping2.get("type"));
}
});
# 1 楼答案
你可以做如下事情
根据需要更改参数
# 2 楼答案
你的类型是
String
,这就是你得到"1", "11", "2"
的原因。将该字符串转换为整数(integer.valueOf()),然后进行比较更改以下内容
到
注意:我没有编译上面的代码
# 3 楼答案
如果如上所述,您希望混合使用
String
和Integer
键,则需要在比较器中处理非整数值(否则,键值应更改为
Integer
,以避免其他开发人员的错误。)# 4 楼答案
“type”的数据类型似乎是
String
。因此排序"1", "11", "2"
似乎正确。将“type”的数据类型更改为Integer
或
在
compare
方法中比较Integer.parseInt
类型的值