跳至主要內容

集合类型

chanchaw小于 1 分钟java

排序

Map多属性排序

List<Map<String,Object>> 类型的数据的多个属性进行排序,不可多次调用 Collections.sort ,要在一次调用中对多个属性进行比较,根据多个属性的先后顺序对前面属性的比较结果提权 - 解决优先级。

Collections.sort(ret, new Comparator<Map<String, Object>>(){
    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
        Long execPlan1 = (Long) o1.get("execPlan");
        Long execPlan2 = (Long) o2.get("execPlan");
        Long parentId1 = (Long) o1.get("parentId");
        Long parentId2 = (Long) o2.get("parentId");
        Integer serialNo1 = (Integer) o1.get("serialNo");
        Integer serialNo2 = (Integer) o2.get("serialNo");

        // 将多个要素比较的结果拼接为字符串后进行排序
        int i1 = execPlan1.compareTo(execPlan2) * 100;
        int i2 = parentId1.compareTo(parentId2) * 10;
        int i3 = serialNo1.compareTo(serialNo2);
        return i1+i2+i3;
    }
});