Java中List集合按指定條件排序
一、排序場景
List 保存著一組亂序排列的字符串,Map 中保存著該組字符串各自的優(yōu)先級。優(yōu)先級數(shù)字從低到高表示優(yōu)先級依次遞減。要求將 List 中的字符串,按照優(yōu)先級從高到低排序。
二、指定條件排序
實現(xiàn) List 排序有多種方法,本文總結(jié)以下幾種。
2.1 調(diào)用 list sort 方法,實現(xiàn)比較器接口進行排序
package com.example.demo.help; import java.util.*; public class ListSortTest { public static void main(String[] args) { List<String> rules = new ArrayList<>(); rules.add("30003"); rules.add("20002"); rules.add("10001"); rules.add("40004"); rules.add("60006"); rules.add("50005"); Map<String, Integer> ruleUpper = new HashMap<>(); ruleUpper.put("10001", 1); ruleUpper.put("20002", 2); ruleUpper.put("30003", 3); ruleUpper.put("40004", 4); rules.sort(new Comparator<String>() { @Override public int compare(String o1, String o2) { return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE); } }); System.out.println(rules); // [10001, 20002, 30003, 40004, 60006, 50005] } }
2.2 調(diào)用 list sort 方法,通過 lambda 表達式實現(xiàn)排序
package com.example.demo.help; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListSortTest { public static void main(String[] args) { List<String> rules = new ArrayList<>(); rules.add("30003"); rules.add("20002"); rules.add("10001"); rules.add("40004"); rules.add("60006"); rules.add("50005"); Map<String, Integer> ruleUpper = new HashMap<>(); ruleUpper.put("10001", 1); ruleUpper.put("20002", 2); ruleUpper.put("30003", 3); ruleUpper.put("40004", 4); rules.sort((o1, o2) -> (ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE))); System.out.println(rules); // [10001, 20002, 30003, 40004, 60006, 50005] } }
2.3 通過 Collections sort 方法,實現(xiàn)比較器接口進行排序
package com.example.demo.help; import java.util.*; public class ListSortTest { public static void main(String[] args) { List<String> rules = new ArrayList<>(); rules.add("30003"); rules.add("20002"); rules.add("10001"); rules.add("40004"); rules.add("60006"); rules.add("50005"); Map<String, Integer> ruleUpper = new HashMap<>(); ruleUpper.put("10001", 1); ruleUpper.put("20002", 2); ruleUpper.put("30003", 3); ruleUpper.put("40004", 4); Collections.sort(rules, new Comparator<String>() { @Override public int compare(String o1, String o2) { return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE); } }); System.out.println(rules); // [10001, 20002, 30003, 40004, 60006, 50005] } }
到此這篇關(guān)于Java中List集合按指定條件排序的文章就介紹到這了,更多相關(guān)List指定條件排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的CyclicBarrier循環(huán)柵欄詳解
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來進行線程協(xié)作,等待線程滿足某個計數(shù),構(gòu)造時設(shè)置計數(shù)個數(shù),每個線程執(zhí)行到某個需要“同步”的時刻調(diào)用 await()方法進行等待,當?shù)却木€程數(shù)滿足計數(shù)個數(shù)時,繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12Spring Boot右鍵maven build成功但是直接運行main方法出錯的解決方案
這篇文章主要介紹了Spring Boot-右鍵maven build成功但是直接運行main方法出錯的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08Java并發(fā)編程中的volatile關(guān)鍵字詳解
這篇文章主要介紹了Java并發(fā)編程中的volatile關(guān)鍵字詳解,volatile?用于保證我們某個變量的可見性,使其一直存放在主存中,不被移動到某個線程的私有工作內(nèi)存中,需要的朋友可以參考下2023-08-08java實現(xiàn)創(chuàng)建臨時文件然后在程序退出時自動刪除文件
這篇文章主要介紹了java實現(xiàn)創(chuàng)建臨時文件然后在程序退出時自動刪除文件,從個人項目中提取出來的,小伙伴們可以直接拿走使用。2015-02-02java大話之創(chuàng)建型設(shè)計模式教程示例
這篇文章主要為大家介紹了java大話之創(chuàng)建型設(shè)計模式教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02詳解SpringBoot定制@ResponseBody注解返回的Json格式
這篇文章主要介紹了詳解SpringBoot定制@ResponseBody注解返回的Json格式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11