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

Java?List排序4種寫法整理

 更新時間:2023年08月24日 09:05:02   作者:悟能的師兄  
這篇文章主要給大家介紹了關于Java?List排序4種寫法整理的相關資料,在有的時候我們會需要對List進行排序,在Java中如何實現(xiàn)呢,本文記錄一下Java中對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表達式實現(xiàn)List接口sort方法排序
        numList.sort((num1,num2)->{return num1.compareTo(num2);});
        System.out.println(numList);
    }

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

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

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方法對對象集合排序,要傳集合和Comparator接口兩個參數(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方法對對象集合排序,重寫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表達式寫法
   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 進行流處理,使用parallelStream可以充分調度多核CPU。
2.使用Comparator.comparing進行排序,reversed()進行倒序排列,thenComparing進行下一個排序。
3.Comparator.comparing()里面的內容,也是就是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());
}
先對學生的班級做排序,然后同班級做倒序
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());
}

當集合中存在null元素時,可以使用針對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://www.fzitv.net/article/232963.htm

總結

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

相關文章

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

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

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

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

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

    Spring?模擬轉賬開發(fā)實戰(zhàn)小結

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

    Springboot無法注入service問題

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

    SpringBoot JdbcTemplate批量操作的示例代碼

    本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    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ù)庫,它使用文件系統(tǒng)加Lucene來組織數(shù)據(jù),需要的朋友可以參考下
    2022-01-01
  • Spring Boot與MyBatis配置與操作實戰(zhàn)指南

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

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

    java獲取json中的全部鍵值對實例

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

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

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

    關于Idea的Invalidate Caches/Restart使用

    項目類導入爆紅可能因Idea緩存異常導致Maven依賴識別失敗,解決方法為通過Invalidate Caches/Restart清除緩存,等待重新構建索引后重新進入項目
    2025-07-07

最新評論

鲜城| 边坝县| 灌云县| 旬阳县| 开封县| 钟祥市| 万宁市| 巴楚县| 陇南市| 南皮县| 黄浦区| 达日县| 循化| 哈尔滨市| 高要市| 厦门市| 金山区| 广河县| 柘荣县| 临漳县| 荣昌县| 南靖县| 沙湾县| 建瓯市| 留坝县| 通城县| 涞水县| 卢氏县| 三河市| 灵山县| 柏乡县| 肇源县| 沙洋县| 纳雍县| 临安市| 科技| 谷城县| 会泽县| 东城区| 鱼台县| 阿合奇县|