开发者社区 问答 正文

java map排序

需求是这样的:
现在有一个list,里面n个map,每个map都有m大小的key-value,且每个map的key的顺序都是一样的,比如说map1的第x个key是y,那么mapn的第x个key也是y。
现在要对list中的每个map进行排序,要按n个map中的相同的key的value值的和的顺序排序。
举例:比如3个map,都有key1,key2,如果
map1.get(key2) + map2.get(key2) + map3.get(key2) > map1.get(key1) + map2.get(key1) + map3.get(key1),
那么就要将这三个map中的key的顺序按照key2,key1的顺序排列,原先每个map中key的顺序是key1,key2。
怎么来实现呢?

展开
收起
蛮大人123 2016-02-29 16:11:58 2589 分享 版权
2 条回答
写回答
取消 提交回答
  • Map的实现类里,TreeMap可以实现排序,
    2019-07-17 18:50:28
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪

    1.先算出所有key的和的排序
    2.对原来的list进行遍历,根据key对应的顺序,之后放到一个list中

    List<String> sortedKeys = ...; // 第一步算的结果
    List<Map<String, Integer>> originList = ...; // 原始数据集合
    List<Map<String, Integer>> resultList = new ArrayList<Map<String, Integer>>();
    
    for(Map<String,Integer> originMap : originList) {
        Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
        for(String sortedKey : sortedKeys) {
            sortedMap.put(sortedKey, originMap.get(sortedKey));
        }
        resultList.put(sortedMap);
    }
    2019-07-17 18:50:28
    赞同 展开评论
问答分类:
问答地址: