BeanComparator实现ArrayList中的元素按多个属性复合排序

基于ABCDRez的激光谐振腔设计与热透镜效应仿真实践 本文详细介绍了如何利用ABCDRez代码包进行激光谐振腔设计与热透镜效应仿真。通过ABCD矩阵理论和高斯光束q参数,该工具能有效模拟热透镜动态变化对腔稳定性的影响,指导腔型优化与热补偿设计,是固体激光器预研与调试的高效辅助手段。 阅读详情

BeanComparator实现ArrayList中的元素按多个属性复合排序  





  1. import java.util.Collections;      
  2. import java.util.Comparator;      
  3. import java.util.ArrayList;      
  4. import org.apache.commons.beanutils.BeanComparator;      
  5. import org.apache.commons.collections.ComparatorUtils;      
  6. import org.apache.commons.collections.comparators.ComparableComparator;      
  7. import org.apache.commons.collections.comparators.ComparatorChain;      
  8.   
  9. public class CompareTipA  {      
  10.     private int  id;      
  11.     private String  name;      
  12.     private String age;      
  13.   
  14.     @SuppressWarnings("unchecked")  
  15.     public static void main(String []args) {      
  16.   
  17.         //在列表中加入若干CompareTipA对象  
  18.         ArrayList<Object> list = new ArrayList<Object>();      
  19.         list.add(new CompareTipA(1,"3","五"));      
  20.         list.add(new CompareTipA(1,"1","六"));      
  21.         list.add(new CompareTipA(1,"5","二"));      
  22.         list.add(new CompareTipA(1,"4","四"));      
  23.         list.add(new CompareTipA(4,"2","一"));      
  24.   
  25.         //创建一个排序规则  
  26.         Comparator mycmp = ComparableComparator.getInstance();      
  27.         mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允许null         
  28.         mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序         
  29.   
  30.         //声明要排序的对象的属性,并指明所使用的排序规则,如果不指明,则用默认排序  
  31.         ArrayList<Object> sortFields = new ArrayList<Object>();      
  32.         sortFields.add(new BeanComparator("id", mycmp)); //id逆序  (主)      
  33.         sortFields.add(new BeanComparator("name"));      //name正序 (副)   
  34.   
  35.         //创建一个排序链  
  36.         ComparatorChain multiSort = new ComparatorChain(sortFields);   
  37.   
  38.         //开始真正的排序,按照先主,后副的规则  
  39.         Collections.sort(list,multiSort);      
  40.   
  41.         for (int i =0;i<list.size();i++) {      
  42.             System.out.println(list.get(i));    //输出      
  43.         }      
  44.         /** 
  45.          * 输出结果如下: 
  46.          * [id=4,name=2,age=一] 
  47.          * [id=1,name=1,age=六] 
  48.          * [id=1,name=3,age=五] 
  49.          * [id=1,name=4,age=四] 
  50.          * [id=1,name=5,age=二] 
  51.          */  
  52.     }      
  53.   
  54.     public CompareTipA(int id, String name,String age) {      
  55.         this.id = id;      
  56.         this.name = name;      
  57.         this.age = age;      
  58.     }      
  59.   
  60.     public int getId() {      
  61.         return this.id;      
  62.     }      
  63.   
  64.     public void setId(int id) {      
  65.         this.id = id;      
  66.     }      
  67.   
  68.     public String getName() {      
  69.         return this.name;      
  70.     }      
  71.   
  72.     public void setName(String name) {      
  73.         this.name = name;      
  74.     }      
  75.   
  76. //    public int compareTo(Object o) {      
  77. //        return this.comparator.compare(this, o);      
  78. //    }      
  79.   
  80.     public String toString() {      
  81.         return "[id=" + this.id + ",name=" + this.name +",age=" + this.age +"]";      
  82.     }      
  83.   
  84.     public String getAge() {      
  85.         return age;      
  86.     }      
  87.   
  88.     public void setAge(String age) {      
  89.         this.age = age;      
  90.     }      
  91. }  

 文章出自   http://dongwei.iteye.com/blog/230458

OpenClaw 子代理配对失败问题分析与解决方案 OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制 阅读详情

相关推荐

VoLTE吞字断续优化方案

网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。

m0_73503557的博客 1514

对list集合中对象的多个属性进行排序

话不多说,直接上代码 public static void main(String[] args){ List<Apple> appleList = new ArrayList<>(); Apple apple = new Apple("red","china","200"); Apple apple2 = new Apple("green","EngLand","150"); Apple apple3 = ne

爱码士的博客 1006

SpringDoc 基本使用指南

SpringDoc 凭借零配置启动注解简洁和深度兼容 Spring 生态的优势,已成为 Spring Boot API 文档的首选工具。自动化- 减少手动维护文档的成本;标准化- 严格遵循 OpenAPI 3 规范;可扩展- 分组、安全控制灵活适配复杂项目。访问即可查看交互式文档(默认路径)

墨鸦的博客 1万+

基于ArrayList的对象多属性值排序

问题描述: 有对象Student具有学号、姓名两个属性,请用两个List对一组student对象进行排序,要求首先按照姓名排序,然后按照学号排序。 以下只是部分代码: [code="java"] //按照名字排序 public int compare(Student o1, Student o2) { String name1 = o1.getStuName(); ...

iteye_5481的博客 461

如何解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE

2744

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5232

BeanComparator类的根据多个属性进行排序

List subs1 = subsService.findSubs(subs); ArrayList sortFields = new ArrayList(); sortFields.add(new BeanComparator("uid")); sortFields.add(new BeanComparator("totalPrice")); ComparatorChain multiSort

轻风木竹 1985

8、水力压裂引起的地质材料力学性质变化的可视化研究

本研究探讨了水力压裂引起的地质材料力学性质变化的可视化方法。利用超声剪切波形数据,通过短时傅里叶变换(STFT)和主成分分析(PCA)进行特征提取和降维,并应用K-means聚类、凝聚聚类和DBSCAN等无监督学习方法对地质力学变化进行非侵入式可视化分析。研究比较了不同特征工程、聚类方法和降维策略对可视化效果的影响,并结合位移不连续性理论为聚类结果分配地质力学变化指数,以提高结果的物理解释性。最终,该方法成功实现了对水力压裂引起的岩石力学性质变化的高效、可靠可视化。

emacs5lisp的博客 109

java beancomparator_使用 java 的反射 和 comparator 实现java bean 的简单排序

一 , 测试beanpublic class TestBean {private String strId;private String strName;public String getStrId() {return strId;}public void setStrId(String strId) {this.strId = strId;}public String getStrName() ...

weixin_39804620的博客 255

廉价却有效?ESD防护中的电容

摘要:在成本敏感型电子产品设计中,多层陶瓷电容(MLCC)可作为TVS二极管的替代方案用于静电放电(ESD)防护。其工作原理是通过电容充放电特性吸收静电能量,而非电压钳位。计算表明100nF/50V MLCC可有效缓冲8kV静电冲击,但存在吸收能量有限、无自恢复等局限。建议将MLCC作为一级缓冲措施,配合TVS等器件形成多级防护,并优先选择X7R材质、100nF容值、50V耐压的0402/0603封装MLCC。该方案在低速信号和电源引脚防护中具有显著成本优势,但不能完全替代专业ESD抑制器。

硬核科技 431

redhawk:avgTW maxTW minTW minWC的区别

分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 696

java beancomparator_Java函数式编程(九):Comparator

实现Comparator接口Comparator接口的身影在JDK库中随处可见,从查找到排序,再到反转操作,等等。Java 8里它变成了一个函数式接口,这样的好处就是我们可以使用流式语法来实现比较器了。我们用几种不同的方式来实现一下Comparator,看看新式语法的价值所在。你的手指头会感谢你的,不用实现匿名内部类少敲了多少键盘啊。使用Comparator进行排序下面这个例子将使用不同的比较方法...

weixin_35705874的博客 416

小论文/大论文必备 | RT-DETR目标检测、数据集增强 | 引入多种数据集增强方法,支持图像和标签同步扩充增强,助力小论文和大论文实验涨点策略,平均提升模型mAP约1-2个百分点

RT-DETR目标检测数据增强策略研究 ,本文针对RT-DETR目标检测模型提出9种数据增强方法,包括几何变换(水平/垂直翻转、中心裁剪)、光照调整(亮度、对比度)和噪声添加(高斯/椒盐噪声)等。所有增强操作均保持图像与标签同步变换,确保训练数据的准确性。实验表明,该策略可提升模型mAP 1-2个百分点,对小目标检测效果尤为显著。文中提供了完整的Python实现代码,支持批量处理图像和标签文件,并详细说明了各增强方法的功能特点。该方法通过提升数据多样性,有效增强了模型在复杂场景下的鲁棒性和泛化能力。

Ai缝合怪、助力小伙伴高效发论文 463

BeanComparator实现ArrayList复合排序

package test;    import java.util.Collections;  import java.util.Comparator;  import java.util.ArrayList;  import org.apache.commons.beanutils.BeanComparator;  import org.apache.commons.collections.Co

happyzwh的专栏 876

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java Map排序实战:键值排序与性能优化

Map作为Java核心集合框架中的键值对容器,其排序操作是数据处理的重要基础。从数据结构角度看,HashMap等实现类基于哈希表实现快速查找,但本身不保证元素顺序。通过Comparator接口和Collections工具类,开发者可以实现按键排序、按值排序以及多字段复合排序等需求。在实际工程中,合理选择TreeMap、Stream API或第三方库方案,能显著提升系统性能,特别是在处理电商销售排行、日志分析等大数据场景时。针对百万级数据集的测试表明,结合并行流处理和原始类型优化,可使排序效率提升40%以上。

weixin_33976072的博客 370

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java beancomparator_JAVA实现根据对象的属性排序--BeanComparator,FixedOrderComparator,ComparatorChain...

最近看到这样一段排序的代码。public static List> getBrandOrderList(List>list, String Field) {String[] brandArr= {"7天", "7天优品", "IU", "派", "麗枫", "喆啡", "希岸", "欢朋", "潮漫", "ZMAX", "非繁&城品"};Comparator typeComp...

weixin_36060465的博客 557

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java业务类排序根据接收不同字段排序支持值为null,支持多列

java 业务层排序支持多列 值为null

qq_31839211的博客 410

java beancomparator_xkbeancomparator

软件简介xkbeancomparator 是一个 java bean 对比修改并输出差异的工具。适用场景:用户编辑提交时,需要记录修改内容,修改前后的值对比,生成操作记录;可以选择记录的字段和字段说明,自定义操作记录。0.依赖 dependency:com.github.xkzhangsanxkbeancomparator0.0.11.常见用处:对修改过的对象进行对比生成修改日志;对比部分字段修改...

weixin_32786041的博客 292

Comparator接口reverse复合排序

Java8 Comparator接口reverse复合排序 今天遇到个问题, 产品说是 先按A字段升序排, 再按B字段降序排 举例,如下实体类 @Data public Class Book() { //书的类型 private Integer type; //书的价格 private Integer money; } 要求按类型升序, 价格降序 尝试如下 list.sort(Comparator.comparing(Book::getType())

creaylei的小花园 657

Comparable排序和Comparator排序介绍

Comparator是建立一个新的类,这个类继承Comparator类专门用来完成排序功能,由于比较是两两比较,所以这个类的调用要在集合的参数中 ,这样这个集合就拥有了排序功能。1,在Javabean类中继承Comparable接口,这样就能调用该方法怕排序。Comparable是在JavaBean中继承的接口,该接口可以实现排序功能;2,bean表示该数据类型,o表示传入对象,用以和当前对象作比较。3,两个年龄作比较,返回正数是放在前面,返回负数是放在后面。这样这个新建的类就拥有排序的功能。

daibadetianshi的博客 287

java 排序方式_Java排序方式对比分析

对于集合来说,排序是一个很常见的操作,Java已经提供了一系列排序的方法,如Collections中的静态方法public static void sort(List list, Comparator c); List接口提供的default void sort(Comparator c); Java Stream提供的sorted(Comparator c) ,只需要传入满足排序规则的Comp...

weixin_35182991的博客 394

Android---对ArrayList排序

在做项目的同时,遇到有一个对ArrayList进行排序的功能,在网上查找了些有关与这方面的代码,最后找到了如下的代码: 先定义一个类A: public class A { private int level; public A(int level){ this.level = level; } public int getLevel(

faith_boys的专栏 3万+

ArrayList 排序

简单说明: ArrayList是TestBean的集合,根据TestBean类中的属性对ArrayList中TestBean 排序。   方法:使用Comparator比较器接口和Collections类进行排序。   package audition;   public class TestBean {       public String key1;     pub

caption2005的专栏 716

ComparatorChain、BeanComparator用法示例

我要写一篇beancomparator的文章,留着占坑,后续修改之。

seasongu的专栏 4515
上一篇: spring quartz 实现全局任务
下一篇: linux 小技巧之 杀掉一组关联进程
rtnull
博客等级 码龄16年 5粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值