java 根据对象的boolean字段对集合进行排序

embedded/2024/10/18 21:22:03/

java_boolean_0">java 根据对象的boolean字段对集合进行排序

需求大概如下: 把boolean为true的排序到前面,false排序到后面

排序后, boolean为true的会在前面, 为false的会在后面 ,

isHasMaterial 为boolean类型

java">@Data
@Builder
public class MoguPoiBaseInfo {/*** 是否有素材,默认false代表没素材,为true代表有素材*/private boolean hasMaterial = false;
}

java">   public void sortByMoguPoiBaseInfo(List<MoguPoiBaseInfo> doSortList) {if (CollectionUtils.isEmpty(doSortList)) {return;}//重写Comparator()方法doSortList.sort((o1, o2) -> {//得到要比较的两个对象的某个字段,这里是requiredboolean o1HasMaterial = o1.isHasMaterial();boolean o2HasMaterial = o2.isHasMaterial();//两个值进行位运算,值不同为1,为true,参与运算//值相同为0,为false,不参与运算if (o1HasMaterial ^ o2HasMaterial) {return o1HasMaterial ? -1 : 1;} else {return 0;}});}

单测

java">    @Testpublic void sortByMoguPoiBaseInfo() {List<MoguPoiBaseInfo> doSortList = new ArrayList<>();MoguVideoSyntheticActionImpl moguVideoSyntheticAction = new MoguVideoSyntheticActionImpl();moguVideoSyntheticAction.sortByMoguPoiBaseInfo(doSortList);System.out.println("JSON.toJSONString(doSortList) = " + JSON.toJSONString(doSortList));moguVideoSyntheticAction.sortByMoguPoiBaseInfo(null);System.out.println("JSON.toJSONString(doSortList) 2222= ");;doSortList.add(MoguPoiBaseInfo.builder().hasMaterial(false).poiId(1L).build());doSortList.add(MoguPoiBaseInfo.builder().hasMaterial(true).poiId(2L).build());doSortList.add(MoguPoiBaseInfo.builder().hasMaterial(false).poiId(3L).build());moguVideoSyntheticAction.sortByMoguPoiBaseInfo(doSortList);System.out.println("JSON.toJSONString(doSortList) = " + JSON.toJSONString(doSortList));}

http://www.ppmy.cn/embedded/20813.html

相关文章

python包里的__init__.py文件里,如果有__all__变量,这个变量用来干什么

__all__ 变量在 Python 包的 __init__.py 文件中用于定义在导入该包时默认导入的模块名称列表。当一个包被导入时&#xff0c;Python 解释器会查找该包的 __init__.py 文件&#xff0c;并检查其中是否定义了 __all__ 变量。如果定义了 __all__ 变量&#xff0c;解释器将只导入 …

css中新型的边框设置属性border-inline

一、概念与背景 border-inline 是 CSS Logical Properties and Values 模块中的一个属性&#xff0c;用于控制元素在流内&#xff08;inline&#xff09;方向上的边框。该模块旨在提供与书写模式&#xff08;writing mode&#xff09;无关的布局和样式描述方式&#xff0c;使得…

openEuler 22.03 LTS SP3(华为欧拉)一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 LTS SP3 一键安装 Oracle 11GR2 RAC&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地…

4.串口通信

USART波特率为9600&#xff0c;采用8倍过采样 USART6 fck频率&#xff1a;84Mhz; USARTDIV 1093.75 DIV_M (u32)USARTDIV DIV_F (USARTDIV - DIV_M) * 8 0.5 USART6->BRR | (DIV_M << 4) | DIV_F float USARTDIV;u32 DIV_M,DIV_F;RCC->AHB1ENR | 1;//端口A使…

milvus indexcoord启动源码分析

indexcoord启动源码分析 // IndexCoord implements IndexCoord grpc server type IndexCoord struct{}indexcoord已经和datacoord合并。 // NewIndexCoord creates a new IndexCoord func NewIndexCoord(ctx context.Context, factory dependency.Factory) (*IndexCoord, err…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于数组实现的有界阻塞队列&…

变频器基础原理

文章目录 0. 基本知识1.三相的电压之和为02.正弦交流相量的相量表示法(相量只是表示正弦量&#xff0c;而不等于正弦量 &#xff1b;只有正弦量才能用相量表示)引入相量表示法目的:一种正弦量的产生方式:正弦量的相量表示&#xff0c;使用欧拉公式表示复数 3.用复数表示正弦量&…