需求是这样的:
现在有一个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。
怎么来实现呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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);
}