欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?List排序4種寫(xiě)法整理

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

一:集合元素是基本類(lèi)型包裝類(lèi)型

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類(lèi)的方法排序
        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類(lèi)的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類(lèi)的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ì)象集合排序,重寫(xiě)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á)式寫(xiě)法
   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://www.dbjr.com.cn/article/232963.htm

總結(jié)

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

相關(guān)文章

  • SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理的原理解析

    SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理的原理解析

    這篇文章主要介紹了SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java多線(xiàn)程之CyclicBarrier的使用方法

    java多線(xiàn)程之CyclicBarrier的使用方法

    這篇文章主要介紹了java多線(xiàn)程之CyclicBarrier的使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 如何在springboot中引入?yún)?shù)校驗(yàn)

    如何在springboot中引入?yún)?shù)校驗(yàn)

    一般我們判斷前端傳過(guò)來(lái)的參數(shù),需要對(duì)某些值進(jìn)行判斷,是否滿(mǎn)足條件,而springboot相關(guān)的參數(shù)校驗(yàn)注解,可以解決我們這個(gè)問(wèn)題,本文給大家介紹如何在springboot中引入?yún)?shù)校驗(yàn),感興趣的朋友一起看看吧
    2023-12-12
  • Java實(shí)現(xiàn)經(jīng)典游戲超級(jí)瑪麗的示例代碼

    Java實(shí)現(xiàn)經(jīng)典游戲超級(jí)瑪麗的示例代碼

    在你的童年記憶里,是否有一個(gè)蹦跳、頂蘑菇的小人?本文將用java語(yǔ)言實(shí)現(xiàn)經(jīng)典游戲《超級(jí)瑪麗》,文中采用了swing技術(shù)進(jìn)行了界面化處理,需要的可以參考一下
    2022-02-02
  • mybatis-plus雪花算法自動(dòng)生成機(jī)器id原理及源碼

    mybatis-plus雪花算法自動(dòng)生成機(jī)器id原理及源碼

    Mybatis-Plus是一個(gè)Mybatis的增強(qiáng)工具,它在Mybatis的基礎(chǔ)上做了增強(qiáng),卻不做改變,Mybatis-Plus是為簡(jiǎn)化開(kāi)發(fā)、提高開(kāi)發(fā)效率而生,但它也提供了一些很有意思的插件,比如SQL性能監(jiān)控、樂(lè)觀(guān)鎖、執(zhí)行分析等,下面一起看看mybatis-plus雪花算法自動(dòng)生成機(jī)器id原理解析
    2021-06-06
  • AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Springboot中@RequestParam和@PathVariable的用法與區(qū)別詳解

    Springboot中@RequestParam和@PathVariable的用法與區(qū)別詳解

    這篇文章主要介紹了Springboot中@RequestParam和@PathVariable的用法與區(qū)別詳解,RESTful API設(shè)計(jì)的最佳實(shí)踐是使用路徑參數(shù)來(lái)標(biāo)識(shí)一個(gè)或多個(gè)特定資源,而使用查詢(xún)參數(shù)來(lái)對(duì)這些資源進(jìn)行排序/過(guò)濾,需要的朋友可以參考下
    2024-01-01
  • Java解析Excel內(nèi)容的方法

    Java解析Excel內(nèi)容的方法

    這篇文章主要介紹了Java解析Excel內(nèi)容的方法,實(shí)例分析了java解析excel文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • ireport數(shù)據(jù)表格報(bào)表的簡(jiǎn)單使用

    ireport數(shù)據(jù)表格報(bào)表的簡(jiǎn)單使用

    這篇文章給大家介紹了如何畫(huà)一個(gè)報(bào)表模板,這里介紹下畫(huà)表格需要用到的組件,文中通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-10-10
  • Springboot如何設(shè)置過(guò)濾器及重復(fù)讀取request里的body

    Springboot如何設(shè)置過(guò)濾器及重復(fù)讀取request里的body

    這篇文章主要介紹了Springboot如何設(shè)置過(guò)濾器及重復(fù)讀取request里的body,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論