list 中存放 map,然后排序

今天同事遇到一个问题,需要在List中存放Map,每个map只存储一对值。

需要按值排序。

勾起了记忆深处的java 比较器。这玩意不常用,估计很多人都没怎么用过。

觉得有点意思,特意贴出来。

 

Public class Test{

    public void test(){
       List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>();
	Map<String,Integer> t1 = new HashMap<String,Integer>();
	Map<String,Integer> t2 = new HashMap<String,Integer>();
	Map<String,Integer> t3 = new HashMap<String,Integer>();
	Map<String,Integer> t4 = new HashMap<String,Integer>();
	t1.put("a", 1);
	t2.put("b", 2);
	t3.put("c", 3);
	t4.put("d", 1);
	list.add(t1);
	list.add(t2);
	list.add(t3);
	list.add(t4);
	Collections.sort(list, new MapCompare());
	System.out.println(list);
    }

    private class MapCompare implements Comparator<Map<String,Integer>>{

      public int compare(Map<String,Integer> o1, Map<String,Integer> o2) {
		int value1 = o1.entrySet().iterator().next().getValue();
		int value2 = o2.entrySet().iterator().next().getValue();
		
		return value1-value2;
	}

   }





}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要对 Map<String, Map<String, List<TodayTradeInfoDto>>> 的对象进行排序,需要明确一下排序的依据,比如按照 TodayTradeInfoDto 的某个属性排序。下面以 TodayTradeInfoDto 的 tradeTime 属性为例,给出一个排序的示例代码: ```java public static Map<String, Map<String, List<TodayTradeInfoDto>>> sortMapByTradeTime(Map<String, Map<String, List<TodayTradeInfoDto>>> tradeInfoMap) { // 用于存放排序结果的 TreeMap TreeMap<String, Map<String, List<TodayTradeInfoDto>>> sortedMap = new TreeMap<>(); // 遍历原始的 tradeInfoMap,将每个 key-value 键值对存入到 sortedMap for (Map.Entry<String, Map<String, List<TodayTradeInfoDto>>> entry1 : tradeInfoMap.entrySet()) { String key1 = entry1.getKey(); Map<String, List<TodayTradeInfoDto>> value1 = entry1.getValue(); TreeMap<String, List<TodayTradeInfoDto>> sortedValue1 = new TreeMap<>(); for (Map.Entry<String, List<TodayTradeInfoDto>> entry2 : value1.entrySet()) { String key2 = entry2.getKey(); List<TodayTradeInfoDto> value2 = entry2.getValue(); List<TodayTradeInfoDto> sortedValue2 = value2.stream() .sorted(Comparator.comparing(TodayTradeInfoDto::getTradeTime)) .collect(Collectors.toList()); sortedValue1.put(key2, sortedValue2); } sortedMap.put(key1, sortedValue1); } // 返回排序结果 return sortedMap; } ``` 这里用到了 Java 的 TreeMap,它会按照 key 的自然顺序进行排序。对于内层的 Map,我们也需要将它转换成 TreeMap,并指定排序的方式。这里用到了 Java 8 的流式编程,对 List 的元素按照 tradeTime 属性排序。最后将排序结果存入到 sortedMap 并返回即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值