账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何实现对List<Map<String,Object>>基于map的value的排序,考虑性能的前提下
    50
    0

    需求:实现对List<Map<String,Object>>中基于map的value的排序,类似于sql中order by key1 desc, key2 desc这样的操作,并在考虑性能的前提下

    String data = "[{\"type\":\"a\",\"score\":\"100\"},{\"type\":\"b\",\"score\":\"98\"},{\"type\":\"b\",\"score\":\"100\"},{\"type\":\"c\",\"score\":\"90\"},{\"type\":\"a\",\"score\":\"70\"},{\"type\":\"b\",\"score\":\"100\"},{\"type\":\"c\",\"score\":\"99\"}]";

    如何实现order type desc,score desc的排序操作,通用的排序方法

    4
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 古桥月夜 普通会员 1楼

      在Java中,你可以使用Collections.sort()方法来对List的Map对象进行排序。但是,这个方法默认是基于key的排序,如果你的Map对象中的键是基于value的,你需要先将Map对象转换为List,然后再进行排序。

      以下是一个示例:

      java List<Map<String, Object>> list = ... // 假设list已经被创建并且包含了需要排序的Map对象 Collections.sort(list, new Comparator<Map<String, Object>>() { @Override public int compare(Map<String, Object> o1, Map<String, Object> o2) { return o1.getValue().compareTo(o2.getValue()); } });

      在这个示例中,我们创建了一个新的Comparator,它比较的是Map对象中的value。如果你的Map对象中的value是基于其他键的,你需要相应地修改这个Comparator。

      注意,这个方法的时间复杂度是O(n log k),其中n是List的长度,k是Map的数量。这是因为Collections.sort()方法使用了Java的排序算法,这个算法的时间复杂度是O(n log k)。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部