List<Map<String,Object>> 排序

基础数据

private List<Map<String,Object>> buildListMap() {
    List<Map<String,Object>> depts = new ArrayList<>();
    Map<String, Object> result = new HashMap<String, Object>();
    result.put("id", 1);
    result.put("type", "type");
    result.put("key","key");
    result.put("value","value");
    result.put("status",0);
    result.put("createDate", new Date());
    result.put("updateDate",new Date());
    result.put("sort","亚瑟");
    depts.add(result);

    Map<String, Object> result1 = new HashMap<String, Object>();
    result1.put("id", 2);
    result1.put("type", "type1");
    result1.put("key","key1");
    result1.put("value","value1");
    result1.put("status",0);
    result1.put("createDate", 10000001);
    result1.put("updateDate",new Date());
    result1.put("sort","剑圣");
    depts.add(result1);

    Map<String, Object> result2 = new HashMap<String, Object>();
    result2.put("id", 3);
    result2.put("type", "type2");
    result2.put("key","key2");
    result2.put("value","value2");
    result2.put("status",0);
    result2.put("createDate", new Date(10000000));
    result2.put("updateDate",new Date());
    result2.put("sort","瑞雯");
    depts.add(result2);

    return depts;
}

中文排序

@Test
public void test3() {
   
    // include 上面基础代码
    List<Map<String, Object>> depts = buildListMap();
    System.out.println(depts);
    
    // 1. 中文排序 sort(也可以针对其他字段排序)
    Collections.sort(depts, (o1, o2) -> {
        // 取出需要排序的字段
        String sort1 = String.valueOf(o1.get("sort"));
        String sort2 = String.valueOf(o2.get("sort"));
        // 排序
        Collator instance = Collator.getInstance(Locale.CHINA);
        // Collator instance = Collator.getInstance(); 其他排序方式
        // 升序, 参数调换位置就是降序
        return instance.compare(sort1, sort2);
    });

    // 2. 实现排序接口
    // Collections.sort(depts, new MapComparator());
    // depts.sort(new MapComparator());

    System.out.println(depts);
}

实现接口排序

接口

package com.xie.test.common;

import java.util.Comparator;
import java.util.Map;

/**
 * @Description
 * @Date 2022-04-27 14:25
 * @Author xie
 */
public class MapComparator implements Comparator<Map<String, Object>> {

    @Override
    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
        // 取出map的key,进行比较排序
        String b1 = o1.get("createDate").toString();
        String b2 = o2.get("createDate").toString();
        if (b2 != null) {
            // 倒序,正序倒过来即可。
            return b2.compareTo(b1);
        }
        return 0;
    }
}

@Test
public void test3() {
   
    // include 上面基础代码
    List<Map<String, Object>> depts = buildListMap();
    System.out.println(depts);
    
    // ......
    
    // 2. 实现排序接口
    Collections.sort(depts, new MapComparator());
    depts.sort(new MapComparator());

    System.out.println(depts);
}
posted @   xiexie0812  阅读(726)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示