java - 排序 ArrayList HashMap

标签 java arraylist collections hashmap

我有一个ArrayList<HashMap<String,String>>我想对它进行排序。我的ArrayList Logcat 中的输出如下:

[{num=0, username=p, startPoliPro=A,  finalPoliPro=B, diff=0},
 {num=1, username=e, startPoliPro=C,  finalPoliPro=D,  diff=548.0Km},
 {num=2, username=e, startPoliPro=E,  finalPoliPro=F, diff=3.0Km}]

我想根据“diff”值按升序对列表进行排序,以便 Logcat 必须类似于:

[{num=0, username=p, startPoliPro=A,  finalPoliPro=B, diff=0},
 {num=2, username=e, startPoliPro=E,  finalPoliPro=F, diff=3.0Km},
 {num=1, username=e, startPoliPro=C,  finalPoliPro=D,  diff=548.0Km}]

我读过很多类似的主题并尝试过类似的内容

Collections.sort(final_itinList, new Comparator<HashMap< String,String >>() {

    @Override
    public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs) {
        // Do your comparison logic here and retrn accordingly.
        return lhs.get("diff").compareTo(rhs.get("diff"));                      
    }
});

没有成功。任何帮助将不胜感激

最佳答案

当前,您正在尝试比较两个 String 对象:

return lhs.get("diff").compareTo(rhs.get("diff"));

您真正想做的是比较返回的整数,因此您需要执行以下操作:

return (Integer.parseInt(lhs.get("diff")) - Integer.parseInt(rhs.get("diff")));

关于java - 排序 ArrayList HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26203803/

相关文章:

java - SWT 浏览器 - 禁用垂直滚动我如何隐藏它?

java - 无法访问的代码 - 不应该无法访问

java - 根据原始值对集合进行排序

java - ArrayList <E> 类中的 addAll() 方法不起作用

c# - 字典和键值对

java - 这个三元运算是什么意思?

java - 如何在 Java 中将数组写入 OutputStream?

java - org.openqa.selenium.WebDriverException : Timed out waiting for driver server to start while initiating Chrome browser through Selenium

java - 删除一个arraylist中存在于另一个arraylist中的所有对象

Java添加对象到ArrayList<object>