最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?List排序4種寫法整理

 更新時(shí)間:2023年08月24日 09:05:02   作者:悟能的師兄  
這篇文章主要給大家介紹了關(guān)于Java?List排序4種寫法整理的相關(guān)資料,在有的時(shí)候我們會(huì)需要對(duì)List進(jìn)行排序,在Java中如何實(shí)現(xiàn)呢,本文記錄一下Java中對(duì)List的幾種排序方式,需要的朋友可以參考下

一:集合元素是基本類型包裝類型

public static void main(String[] args)  {
        List<Integer> numList=new ArrayList<>();
        numList.add(999);
        numList.add(123);
        numList.add(456);
        numList.add(66);
        numList.add(9);
        Collections.sort(numList);  //使用Collections類的方法排序
        numList.sort(new Comparator<Integer>() {//使用List接口的方法排序
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        });
        //lambda表達(dá)式實(shí)現(xiàn)List接口sort方法排序
        numList.sort((num1,num2)->{return num1.compareTo(num2);});
        System.out.println(numList);
    }

二:對(duì)象的集合根據(jù)某個(gè)屬性排序

例如:對(duì)User對(duì)象集合根據(jù)User類的age屬性排序,默認(rèn)是升序。不推薦,不推薦,不推薦

public static void main(String[] args)  {
	List<User> numList=new ArrayList<>();
	User u=new User();
	u.setAge(12);
	numList.add(u);
	User u1=new User();
	u1.setAge(34);
	numList.add(u1);
	User u2=new User();
	u2.setAge(6);
	numList.add(u2);
	User u3=new User();
	u3.setAge(99);
	numList.add(u3);
	//Collections類的sort方法對(duì)對(duì)象集合排序,要傳集合和Comparator接口兩個(gè)參數(shù)
	Collections.sort(numList, new Comparator<User>() {
		@Override
		public int compare(User o1, User o2) {
			Integer age1= o1.getAge();
			Integer age2= o2.getAge();
			return  age1.compareTo(age2);
		}
	});
	//List接口自身的sort方法對(duì)對(duì)象集合排序,重寫Comparator接口方法即可
	numList.sort(new Comparator<User>() {
		@Override
		public int compare(User u1, User u2) {
			Integer age1= u1.getAge();
			Integer age2= u2.getAge();
			return  age1.compareTo(age2);
		}
	});
	//List接口的sort方法,lambda表達(dá)式寫法
   numList.sort((u4,u5)->{
		Integer age1= u4.getAge();
		Integer age2= u5.getAge();
		return  age1.compareTo(age2);
	});
	System.out.println(numList);
}

三:使用Stream流排序

1.首先你需要list.parallelStream().sorted 進(jìn)行流處理,使用parallelStream可以充分調(diào)度多核CPU。
2.使用Comparator.comparing進(jìn)行排序,reversed()進(jìn)行倒序排列,thenComparing進(jìn)行下一個(gè)排序。
3.Comparator.comparing()里面的內(nèi)容,也是就是Object::getter,例如KeywordCounterDTO::getKeyword4.最后格式化為需要的格式 List 是.collect(Collectors.toList()) , Map 是 .collect(Collectors.toMap(KeywordCounterDTO::getKey, KeywordCounterDTO::getValue))

根據(jù)年齡倒序排
public static void main(String[] args)  {
	List<User> numList=new ArrayList<>();
	User u=new User();
	u.setAge(12);
	numList.add(u);
	User u1=new User();
	u1.setAge(34);
	numList.add(u1);
	User u2=new User();
	u2.setAge(6);
	numList.add(u2);
	User u3=new User();
	u3.setAge(99);
	numList.add(u3);
	numList = numList.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
}
先對(duì)學(xué)生的班級(jí)做排序,然后同班級(jí)做倒序
public static void main(String[] args)  {
	List<User> numList=new ArrayList<>();
	User u=new User();
	u.setClass(1);
	u.setAge(12);
	numList.add(u);
	User u1=new User();
	u.setClass(1);
	u1.setAge(34);
	numList.add(u1);
	User u2=new User();
	u.setClass(2);
	u2.setAge(6);
	numList.add(u2);
	User u3=new User();
	u.setClass(2);
	u3.setAge(99);
	numList.add(u3);
	numList = numList.parallelStream().sorted(
	  Comparator.comparing(User::getClass).reversed().thenComparing(User::getAge)
	).collect(Collectors.toList());
}

當(dāng)集合中存在null元素時(shí),可以使用針對(duì)null友好的比較器,null元素排在集合的最前面:nullsFirst

public static void main(String[] args)  {
	List<User> numList=new ArrayList<>();
	User u=new User();
	u.setClass(1);
	u.setAge(12);
	numList.add(u);
	User u1=new User();
	u.setClass(1);
	u1.setAge(34);
	numList.add(u1);
	User u2=new User();
	u.setClass(2);
	u2.setAge(6);
	numList.add(u2);
	User u3=new User();
	u.setClass(2);
	u3.setAge(99);
	numList.add(u3);
	numList = numList.parallelStream().sorted(
	  Comparator.nullsFirst(User::getClass).reversed().thenComparing(User::getAge)
	).collect(Collectors.toList());
}

部分參考:http://m.fzitv.net/article/232963.htm

總結(jié)

到此這篇關(guān)于Java List排序4種寫法整理的文章就介紹到這了,更多相關(guān)Java List排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+?Sharding?Sphere?輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段加解密功能

    SpringBoot+?Sharding?Sphere?輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段加解密功能

    在Spring?Boot生態(tài)中,有一個(gè)非常厲害的開源框架:Apache?ShardingSphere,它是一款分布式?SQL?事務(wù)和查詢引擎,可通過數(shù)據(jù)分片、彈性伸縮、加密等能力對(duì)任意數(shù)據(jù)庫(kù)進(jìn)行增強(qiáng),今天通過這篇文章,我們一起來了解一下如何在?Spring?Boot?中快速實(shí)現(xiàn)數(shù)據(jù)的加解密功能
    2024-07-07
  • 詳解如何實(shí)現(xiàn)SpringBoot的底層注解

    詳解如何實(shí)現(xiàn)SpringBoot的底層注解

    今天給大家?guī)淼奈恼率侨绾螌?shí)現(xiàn)SpringBoot的底層注解,文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-06-06
  • Spring?模擬轉(zhuǎn)賬開發(fā)實(shí)戰(zhàn)小結(jié)

    Spring?模擬轉(zhuǎn)賬開發(fā)實(shí)戰(zhàn)小結(jié)

    轉(zhuǎn)賬是金融類應(yīng)用的核心場(chǎng)景之一,涉及付款方扣減金額和收款方增加金額兩個(gè)關(guān)鍵操作,本文主要介紹了Spring?模擬轉(zhuǎn)賬開發(fā)實(shí)戰(zhàn)小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-05-05
  • Springboot無法注入service問題

    Springboot無法注入service問題

    這篇文章主要介紹了Springboot無法注入service的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot JdbcTemplate批量操作的示例代碼

    SpringBoot JdbcTemplate批量操作的示例代碼

    本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 基于Jenkins+Maven+Gitea+Nexus搭建CICD環(huán)境的方式

    基于Jenkins+Maven+Gitea+Nexus搭建CICD環(huán)境的方式

    這篇文章主要介紹了基于Jenkins+Maven+Gitea+Nexus從0到1搭建CICD環(huán)境,大家都知道Nexus是一套“開箱即用”的系統(tǒng)不需要數(shù)據(jù)庫(kù),它使用文件系統(tǒng)加Lucene來組織數(shù)據(jù),需要的朋友可以參考下
    2022-01-01
  • Spring Boot與MyBatis配置與操作實(shí)戰(zhàn)指南

    Spring Boot與MyBatis配置與操作實(shí)戰(zhàn)指南

    本文介紹了如何在SpringBoot項(xiàng)目中配置和使用MyBatis,包括環(huán)境準(zhǔn)備、數(shù)據(jù)源配置、MyBatis配置、數(shù)據(jù)操作、事務(wù)管理以及高級(jí)配置如緩存和插件的使用,通過這些步驟,可以實(shí)現(xiàn)高效的數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序開發(fā),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java獲取json中的全部鍵值對(duì)實(shí)例

    java獲取json中的全部鍵值對(duì)實(shí)例

    下面小編就為大家分享一篇java獲取json中的全部鍵值對(duì)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Spring?Boot?實(shí)現(xiàn)?IP?限流的原理、實(shí)踐與利弊解析

    Spring?Boot?實(shí)現(xiàn)?IP?限流的原理、實(shí)踐與利弊解析

    在Spring?Boot中實(shí)現(xiàn)IP限流是一種簡(jiǎn)單而有效的方式來保障系統(tǒng)的穩(wěn)定性和可用性,本文給大家介紹Spring?Boot實(shí)現(xiàn)IP限流:原理、實(shí)踐與利弊分析,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • 關(guān)于Idea的Invalidate Caches/Restart使用

    關(guān)于Idea的Invalidate Caches/Restart使用

    項(xiàng)目類導(dǎo)入爆紅可能因Idea緩存異常導(dǎo)致Maven依賴識(shí)別失敗,解決方法為通過Invalidate Caches/Restart清除緩存,等待重新構(gòu)建索引后重新進(jìn)入項(xiàng)目
    2025-07-07

最新評(píng)論

绥滨县| 鹰潭市| 涪陵区| 东丽区| 游戏| 徐水县| 双城市| 静宁县| 长垣县| 江陵县| 镇平县| 信宜市| 台前县| 两当县| 华宁县| 界首市| 泰安市| 桂阳县| 教育| 江源县| 福鼎市| 泰兴市| 和平区| 蓝山县| 雷山县| 阿图什市| 奉新县| 沙雅县| 本溪| 井研县| 唐海县| 曲周县| 若尔盖县| 武定县| 微博| 徐汇区| 大宁县| 肥城市| 迁西县| 丹东市| 旌德县|