java实现多字段排序(普通对象List和MapList)

public class SortTest {

    public static void main(String[] args) {
        //普通对象list
        sortVOList();

        //mapList
        sortMapList();
    }

    private static void sortVOList() {
        List<RiskMonitorScrollVO> voList = new ArrayList<>();
        RiskMonitorScrollVO vo = new RiskMonitorScrollVO();
        vo.setTime("202303");
        vo.setOrgName("机构001");
        vo.setOrgSortNo("001");
        vo.setTargetName("指标001");
        vo.setTargetSortNo("001");
        voList.add(vo);

        vo = new RiskMonitorScrollVO();
        vo.setTime("202303");
        vo.setOrgName("机构003");
        vo.setOrgSortNo("004");
        vo.setTargetName("指标001");
        vo.setTargetSortNo("001");
        voList.add(vo);

        vo = new RiskMonitorScrollVO();
        vo.setTime("202303");
        vo.setOrgName("机构002");
        vo.setOrgSortNo("003");
        vo.setTargetName("指标001");
        vo.setTargetSortNo("001");
        voList.add(vo);

        vo = new RiskMonitorScrollVO();
        vo.setTime("202303");
        vo.setOrgName("机构004");
        vo.setOrgSortNo("002");
        vo.setTargetName("指标002");
        vo.setTargetSortNo("002");
        voList.add(vo);

        vo = new RiskMonitorScrollVO();
        vo.setTime("202202");
        vo.setOrgName("机构001");
        vo.setOrgSortNo("001");
        vo.setTargetName("指标001");
        vo.setTargetSortNo("001");
        voList.add(vo);


        vo = new RiskMonitorScrollVO();
        vo.setTime("202210");
        vo.setOrgName("机构001");
        vo.setOrgSortNo("001");
        vo.setTargetName("指标001");
        vo.setTargetSortNo("001");
        voList.add(vo);
        System.out.println(JSON.toJSONString(voList));

        voList.sort(Comparator.comparing(RiskMonitorScrollVO::getTime, Comparator.reverseOrder())
                .thenComparing(RiskMonitorScrollVO::getOrgSortNo)
                .thenComparing(RiskMonitorScrollVO::getTargetSortNo));
        System.out.println(JSON.toJSONString(voList));
    }

    private static void sortMapList() {
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("orgId", 1);
        map.put("time", "202301");
        list.add(map);

        map = new HashMap<>();
        map.put("orgId", 1);
        map.put("time", "202212");
        list.add(map);

        map = new HashMap<>();
        map.put("orgId", 3);
        map.put("time", "202202");
        list.add(map);

        map = new HashMap<>();
        map.put("orgId", 2);
        map.put("time", "202301");
        list.add(map);
        System.out.println(list);

        list.sort(Comparator.comparing(x -> ((Integer) ((Map<String, Object>) x).get("orgId")))
                .thenComparing(x -> ((String) ((Map<String, Object>) x).get("time")))
        );

        System.out.println(list);
    }
}

 

posted @ 2023-03-21 15:52  追极  阅读(654)  评论(0编辑  收藏  举报