三個字段排序

這樣的一個需求,資產數量升序排列,資產數量相同的按通過率降序排序,通過率也相同的按名稱的首字母排序。

如果在數據庫中其實很好操作,因爲特殊原因,目前需要在業務邏輯中進行處理。這裏也順便記錄一下連續比較的用法。

待排序的數據集是List<Map<String,Object>>類型的list鏈表ownerAssetsData。

System.out.println("====================數據開始排序:");

Comparator<Map<String, Object>> comparator1 = Comparator.comparing(m -> (Integer) m.get("assetsNum"));

Comparator<Map<String, Object>> comparator2 = Comparator.comparing(m -> {
            String passRateString = (String) m.get("passRate");
            return Double.parseDouble(passRateString.substring(0, passRateString.length() - 1));
        });

Comparator<Map<String, Object>> comparator3 = Comparator.comparing(m -> (String)             
    m.get("ownerName"), Collator.getInstance(Locale.CHINA));

List<Map<String, Object>> assetsNum = ownerAssetsData.stream().
                sorted(comparator1.thenComparing(comparator2).thenComparing(comparator3))
                .collect(Collectors.toList());

System.out.println("====================數據結束排序");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章