天天看點

對List<Map>資料排序

對List< Map >資料排序

{"msg":"成功","code":0,"obj":[{"importance":3,"childList":[{"importance":3,"kpId":2091,"kpName":"增值稅應納稅額的計算-一般計稅方法應納稅額的計算","attrStatus":2,"kpScore":1.00,"isExamPoint":1,"baseKpId":2139,"isMust":1},{"importance":3,"kpId":2093,"kpName":"增值稅應納稅額的計算-簡易計稅方法應納稅額的計算","attrStatus":2,"kpScore":1.00,"isExamPoint":1,"baseKpId":2141,"isMust":1},{"importance":3,"kpId":2095,"kpName":"增值稅應納稅額的計算-進口貨物應納稅額的計算","attrStatus":2,"kpScore":0.67,"isExamPoint":1,"baseKpId":2143,"isMust":1}],"kpName":"增值稅應納稅額的計算","kpId":2089,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2137,"isMust":1},{"importance":3,"childList":[{"importance":3,"kpId":2063,"kpName":"增值稅征稅範圍-銷售貨物","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2111,"isMust":1},{"importance":3,"kpId":2065,"kpName":"增值稅征稅範圍-銷售勞務","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2113,"isMust":1},{"importance":3,"kpId":2067,"kpName":"增值稅征稅範圍-銷售服務","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2115,"isMust":1},{"importance":3,"kpId":2069,"kpName":"增值稅征稅範圍-銷售無形資産","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2117,"isMust":1},{"importance":3,"kpId":2071,"kpName":"增值稅征稅範圍-銷售不動産","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2119,"isMust":1},{"importance":3,"kpId":2073,"kpName":"增值稅征稅範圍-進口貨物","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2121,"isMust":1},{"importance":3,"kpId":2075,"kpName":"增值稅征稅範圍-非經營活動的界定","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2123,"isMust":1},{"importance":3,"kpId":2077,"kpName":"增值稅征稅範圍-境内銷售服務、無形資産或者不動産的界定","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2125,"isMust":1},{"importance":3,"kpId":2079,"kpName":"增值稅征稅範圍-視同銷售貨物行為","attrStatus":2,"kpScore":0.19,"isExamPoint":1,"baseKpId":2127,"isMust":1},{"importance":3,"kpId":2081,"kpName":"增值稅征稅範圍-混合銷售","attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2129,"isMust":1},{"importance":3,"kpId":2083,"kpName":"增值稅征稅範圍-兼營","attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2131,"isMust":1},{"importance":3,"kpId":2085,"kpName":"增值稅征稅範圍-不征收增值稅項目","attrStatus":2,"kpScore":0.19,"isExamPoint":1,"baseKpId":2133,"isMust":1}],"kpName":"增值稅征稅範圍","kpId":2061,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2109,"isMust":1},{"importance":3,"childList":[{"importance":3,"kpId":2113,"kpName":"消費稅應納稅額的計算-銷售額的确定","attrStatus":2,"kpScore":0.50,"isExamPoint":1,"baseKpId":2161,"isMust":1},{"importance":3,"kpId":2115,"kpName":"消費稅應納稅額的計算-應納稅額的計算","attrStatus":2,"kpScore":0.50,"isExamPoint":1,"baseKpId":2163,"isMust":1},{"importance":3,"kpId":2117,"kpName":"消費稅應納稅額的計算-已納消費稅的扣除","attrStatus":2,"kpScore":0.49,"isExamPoint":1,"baseKpId":2165,"isMust":1}],"kpName":"消費稅應納稅額的計算","kpId":2111,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2159,"isMust":1},{"importance":1,"childList":[],"kpName":"稅收與稅收法律關系","kpId":2053,"attrStatus":2,"isExamPoint":1,"baseKpId":2101,"isMust":0},{"importance":1,"childList":[],"kpName":"稅法要素","kpId":2055,"attrStatus":2,"isExamPoint":1,"baseKpId":2103,"isMust":1},{"importance":1,"childList":[],"kpName":"現行稅種與征收機關","kpId":2057,"attrStatus":2,"isExamPoint":1,"baseKpId":2105,"isMust":1},{"importance":2,"childList":[],"kpName":"增值稅納稅人和扣繳義務人","kpId":2059,"attrStatus":2,"isExamPoint":1,"baseKpId":2107,"isMust":1},{"importance":1,"childList":[],"kpName":"增值稅稅率和征收率","kpId":2087,"attrStatus":2,"isExamPoint":1,"baseKpId":2135,"isMust":1},{"importance":2,"childList":[],"kpName":"增值稅稅收優惠","kpId":2097,"attrStatus":2,"isExamPoint":1,"baseKpId":2145,"isMust":1},{"importance":2,"childList":[],"kpName":"增值稅征收管理","kpId":2099,"attrStatus":2,"isExamPoint":1,"baseKpId":2147,"isMust":1},{"importance":2,"childList":[],"kpName":"增值稅專用發票使用規定","kpId":2101,"attrStatus":2,"isExamPoint":1,"baseKpId":2149,"isMust":1},{"importance":2,"childList":[],"kpName":"消費稅納稅人","kpId":2103,"attrStatus":2,"isExamPoint":1,"baseKpId":2151,"isMust":1},{"importance":3,"childList":[],"kpName":"消費稅征稅範圍","kpId":2105,"attrStatus":2,"isExamPoint":1,"baseKpId":2153,"isMust":1},{"importance":2,"childList":[],"kpName":"消費稅稅目","kpId":2107,"attrStatus":2,"isExamPoint":1,"baseKpId":2155,"isMust":1},{"importance":1,"childList":[],"kpName":"消費稅稅率","kpId":2109,"attrStatus":2,"isExamPoint":1,"baseKpId":2157,"isMust":1},{"importance":2,"childList":[],"kpName":"消費稅征收管理","kpId":2119,"attrStatus":2,"isExamPoint":1,"baseKpId":2167,"isMust":1},{"importance":1,"childList":[],"kpName":"第四章小結","kpId":2121,"attrStatus":2,"isExamPoint":0,"baseKpId":2169,"isMust":0}]}      

按kpScore倒序排列

list.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed())
                        .collect(Collectors.toList());      

public class MapCompare {

    public static BigDecimal comparingByKpScore(Map map){
        return (BigDecimal) map.get("kpScore");
    }
//、、、、、、如果需要其他字段排序可在下方補充
}      

public List<Map> getKpListByChapterIdOrder(String chapterId) {
        //擷取原始資料
        List<Map> resuList = getKpListByChapterId(chapterId.toString());
        //對原始資料字段進行整理
        //傳回值list
        List<Map> chapterKpIds = new ArrayList<>();
        Map resuMap;
        //周遊取子級知識點
        for (Map map : resuList) {
            //判斷是否有子級
            List<Map> childList = (List<Map>) map.get("childList");
            if (CollectionUtils.isNotEmpty(childList)) {
                //有子級知識點,則取子級知識點
                for (Map cm : childList) {
                    resuMap = new HashMap(8);
                    resuMap.put("kpId",cm.get("kpId").toString());
                    resuMap.put("kpName",cm.get("kpName"));
                    resuMap.put("kpScore",cm.get("kpScore"));
                    chapterKpIds.add(resuMap);
                }

            }else {
                //沒有子級則取父級
                resuMap = new HashMap(8);
                resuMap.put("kpId",map.get("kpId").toString());
                resuMap.put("kpName",map.get("kpName"));
                resuMap.put("kpScore",map.get("kpScore"));
                chapterKpIds.add(resuMap);
            }
        }
        //按kpScore倒序排列
        chapterKpIds =
                chapterKpIds.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed())
                        .collect(Collectors.toList());
        //傳回資料
        return chapterKpIds;
    }      

list.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed()
                .thenComparing(Comparator.comparing(MapCompare::comparingByOther)))
                        .collect(Collectors.toList());      

[{"kpScore":1.20,"kpName":"消費稅征稅範圍","kpId":"2105"},{"kpScore":1.15,"kpName":"增值稅專用發票使用規定","kpId":"2101"},{"kpScore":1.05,"kpName":"增值稅稅收優惠","kpId":"2097"},{"kpScore":1.00,"kpName":"增值稅應納稅額的計算-一般計稅方法應納稅額的計算","kpId":"2091"},{"kpScore":1.00,"kpName":"增值稅應納稅額的計算-簡易計稅方法應納稅額的計算","kpId":"2093"},{"kpScore":0.67,"kpName":"增值稅應納稅額的計算-進口貨物應納稅額的計算","kpId":"2095"},{"kpScore":0.67,"kpName":"消費稅稅率","kpId":"2109"},{"kpScore":0.62,"kpName":"現行稅種與征收機關","kpId":"2057"},{"kpScore":0.62,"kpName":"增值稅征收管理","kpId":"2099"},{"kpScore":0.52,"kpName":"消費稅稅目","kpId":"2107"},{"kpScore":0.50,"kpName":"消費稅應納稅額的計算-銷售額的确定","kpId":"2113"},{"kpScore":0.50,"kpName":"消費稅應納稅額的計算-應納稅額的計算","kpId":"2115"},{"kpScore":0.49,"kpName":"消費稅應納稅額的計算-已納消費稅的扣除","kpId":"2117"},{"kpScore":0.43,"kpName":"增值稅納稅人和扣繳義務人","kpId":"2059"},{"kpScore":0.43,"kpName":"消費稅征收管理","kpId":"2119"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-銷售貨物","kpId":"2063"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-銷售勞務","kpId":"2065"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-銷售服務","kpId":"2067"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-銷售無形資産","kpId":"2069"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-銷售不動産","kpId":"2071"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-進口貨物","kpId":"2073"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-非經營活動的界定","kpId":"2075"},{"kpScore":0.20,"kpName":"增值稅征稅範圍-境内銷售服務、無形資産或者不動産的界定","kpId":"2077"},{"kpScore":0.19,"kpName":"增值稅征稅範圍-視同銷售貨物行為","kpId":"2079"},{"kpScore":0.19,"kpName":"增值稅征稅範圍-不征收增值稅項目","kpId":"2085"},{"kpScore":0.19,"kpName":"稅收與稅收法律關系","kpId":"2053"},{"kpScore":0.19,"kpName":"增值稅稅率和征收率","kpId":"2087"},{"kpScore":0.00,"kpName":"增值稅征稅範圍-混合銷售","kpId":"2081"},{"kpScore":0.00,"kpName":"增值稅征稅範圍-兼營","kpId":"2083"},{"kpScore":0.00,"kpName":"稅法要素","kpId":"2055"},{"kpScore":0.00,"kpName":"消費稅納稅人","kpId":"2103"},{"kpScore":0.00,"kpName":"第四章小結","kpId":"2121"}]      

繼續閱讀