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

Java對(duì)象集合按照指定元素順序排序的實(shí)現(xiàn)

 更新時(shí)間:2024年07月02日 11:52:18   作者:smileNicky  
最近在對(duì)一個(gè)集合列表的數(shù)據(jù)進(jìn)行排序,需求是要集合數(shù)據(jù)按照一個(gè)排序狀態(tài)值進(jìn)行排序,而這個(gè)狀態(tài)值,不是按照從小到大這樣的順序排序的,而是要按照特定的順序,所以本文給大家介紹了Java對(duì)象集合按照指定元素順序排序的實(shí)現(xiàn),需要的朋友可以參考下

需求背景

最近在對(duì)一個(gè)集合列表的數(shù)據(jù)進(jìn)行排序,需求是要集合數(shù)據(jù)按照一個(gè)排序狀態(tài)值進(jìn)行排序,而這個(gè)狀態(tài)值,不是按照從小到大這樣的順序排序的,而是要按照特定的順序,比如按照1, 0, 2的順序排的,所以需要自定義一個(gè)排序工具類(lèi)來(lái)實(shí)現(xiàn)

解決方案

寫(xiě)一個(gè)排序工具類(lèi)

package cn.nzp.ems.ecb.server.business.screen;


import java.io.Serializable;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class CustomizeNumComparator implements Comparator<Integer>, Serializable {

    private static final long serialVersionUID = 6076418974912880405L;

    List<Integer> numList = Stream.of(1, 0, 2).collect(Collectors.toList());


    @Override
    public int compare(Integer o1, Integer o2) {
        int i1 = numList.indexOf(o1);
        int i2 = numList.indexOf(o2);
        return (i1 == -1 || i2 == -1) ? (i2 - i1) : i1 - i2;
    }
}

測(cè)試一下排序

@Test
public void testCompare() {
	List<RecordDto> list = Lists.newArrayList();
	RecordDto record01= new RecordDto();
	record01.setOrderNum(2);
	record01.setSName("測(cè)試名稱(chēng)1");

	RecordDto record02= new RecordDto();
	record02.setOrderNum(0);
	record02.setSName("測(cè)試名稱(chēng)2");

	RecordDto record03 = new RecordDto();
	record03.setOrderNum(1);
	record03.setSName("測(cè)試名稱(chēng)3");

	RecordDto record04= new RecordDto();
	record04.setOrderNum(2);
	record04.setSName("測(cè)試名稱(chēng)4");

	RecordDto record05= new RecordDto ();
	record05.setOrderNum(0);
	record05.setSName("測(cè)試名稱(chēng)5");

	list.add(record01);
	list.add(record02);
	list.add(record03);
	list.add(record04);
	list.add(record05);


	list = list.stream()
			.sorted(Comparator.comparing(RecordDto::getOrderNum, new CustomizeNumComparator()))
			.collect(Collectors.toList());
	list.stream().forEach(e -> {
		System.out.println(e.getName() +", " +
				e.getOrderNum());
	});
}

跑一下測(cè)試結(jié)果

如果不想寫(xiě)一個(gè)排序工具類(lèi),也可以創(chuàng)建一個(gè)Comparator即可

public void testCompare() {
	List<Integer> numList = Stream.of(1, 0, 2).collect(Collectors.toList());
	Comparator<RecordDto> comparingIndex = Comparator.comparing(record -> {
		final int index = numList.indexOf(record.getOrderNum());
		return index == -1 ? Long.MAX_VALUE : index;
	});
	list = list.stream()
			.sorted(comparingIndex.thenComparing(RecordDto::getCreateTime, Comparator.nullsLast(Date::compareTo)))
			.collect(Collectors.toList());
}

到此這篇關(guān)于Java對(duì)象集合按照指定元素順序排序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java指定元素順序排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot集成LiteFlow工作流引擎的完整指南

    SpringBoot集成LiteFlow工作流引擎的完整指南

    LiteFlow作為一款國(guó)產(chǎn)輕量級(jí)規(guī)則引擎/流程引擎,以其零學(xué)習(xí)成本、高可擴(kuò)展性和極致性能成為微服務(wù)架構(gòu)下的理想選擇,本文將詳細(xì)講解SpringBoot集成LiteFlow的全過(guò)程,助大家輕松駕馭輕量級(jí)流程編排
    2025-06-06
  • 詳解Spring Boot實(shí)戰(zhàn)之Rest接口開(kāi)發(fā)及數(shù)據(jù)庫(kù)基本操作

    詳解Spring Boot實(shí)戰(zhàn)之Rest接口開(kāi)發(fā)及數(shù)據(jù)庫(kù)基本操作

    本篇文章主要介紹了Spring Boot實(shí)戰(zhàn)之Rest接口開(kāi)發(fā)及數(shù)據(jù)庫(kù)基本操作,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • Spring Boot中RedisTemplate的使用示例詳解

    Spring Boot中RedisTemplate的使用示例詳解

    RedisTemplate.opsForHash()是RedisTemplate類(lèi)提供的用于操作Hash類(lèi)型的方法,它可以用于對(duì)Redis中的Hash數(shù)據(jù)結(jié)構(gòu)進(jìn)行各種操作,如設(shè)置字段值、獲取字段值、刪除字段值等,本文介紹Spring Boot中RedisTemplate的使用,感興趣的朋友一起看看吧
    2023-10-10
  • windows定時(shí)器配置執(zhí)行java jar文件的方法詳解

    windows定時(shí)器配置執(zhí)行java jar文件的方法詳解

    這篇文章主要給大家介紹了關(guān)于windows定時(shí)器配置執(zhí)行java jar文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java編程中的vector類(lèi)用法學(xué)習(xí)筆記

    Java編程中的vector類(lèi)用法學(xué)習(xí)筆記

    Vector通常被用來(lái)實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,即可實(shí)現(xiàn)自動(dòng)增長(zhǎng)的對(duì)象數(shù)組,和C++一樣vector類(lèi)同樣被Java內(nèi)置,下面就來(lái)看一下vector類(lèi)的基本用法.
    2016-05-05
  • maven-surefire-plugin總結(jié)示例詳解

    maven-surefire-plugin總結(jié)示例詳解

    這篇文章主要介紹了maven-surefire-plugin總結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java分代垃圾回收策略原理詳解

    Java分代垃圾回收策略原理詳解

    這篇文章主要介紹了Java分代垃圾回收策略原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中將String轉(zhuǎn)換為int的多種方法

    Java中將String轉(zhuǎn)換為int的多種方法

    字符串轉(zhuǎn)換為整數(shù)是一個(gè)常見(jiàn)需求,本文主要介紹了Java中將String轉(zhuǎn)換為int的多種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • springboot 按月分表的實(shí)現(xiàn)方式

    springboot 按月分表的實(shí)現(xiàn)方式

    本文主要介紹了springboot 按月分表的實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式

    SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式

    編程式事務(wù)管理是通過(guò)編寫(xiě)代碼來(lái)管理事務(wù),相對(duì)于聲明式事務(wù)(@Transactional注解),它提供了更細(xì)粒度的事務(wù)控制,這篇文章主要介紹了SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

赤峰市| 循化| 准格尔旗| 洪泽县| 万年县| 昭觉县| 新巴尔虎左旗| 仲巴县| 横峰县| 利辛县| 会同县| 东宁县| 乌拉特后旗| 宁波市| 本溪| 上虞市| 东莞市| 逊克县| 康马县| 永兴县| 银川市| 芦山县| 板桥市| 鹤岗市| 台中市| 彭山县| 宁晋县| 景宁| 海淀区| 夹江县| 宁远县| 吉安县| 河间市| 南京市| 衡山县| 论坛| 略阳县| 鄯善县| 青浦区| 海晏县| 临沧市|