当前位置: 首页 > news >正文

Comparator.comparing 排序注意

1. 对数字型字符串排序

 List<String> values = new ArrayList<>();values.add("10");values.add("6");values.add("20");values.add("30");values.add("50");//方法1 (正确的排序方法)//倒序--》由大到小/*List<String> collect = values.stream().sorted((x1, x2) -> {BigDecimal x1Reult = new BigDecimal(x1);BigDecimal x2Reult = new BigDecimal(x2);return x2Reult.compareTo(x1Reult);}).collect(Collectors.toList());*///方法2 (错误的排序方法)(只能按字符匹配 先比较第一位)List<String> collect = values.stream().sorted(String::compareTo).collect(Collectors.toList());System.out.println(StringUtils.join(values, ","));

// 输出
在这里插入图片描述
显然不是我们想要的结果;需要先将字符串转为数字再排序

2. 对日期排序

SimpleDateFormat sdf =   new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date date1 = sdf.parse( "2022-07-10 12:12:12" );Date date2 = sdf.parse( "2023-07-20 10:10:10" );Date date3 = sdf.parse( "2022-08-20 10:10:10" );List<Date> dateList = new ArrayList<>();dateList.add(date1);dateList.add(date2);dateList.add(date3);/* 方法1List<Date> collect1 = dateList.stream().sorted((d1, d2) -> {boolean equals = d1.equals(d2);if (!equals){if (d1.before(d2)) {return -1;} else if (d1.after(d2)){return 1;}}return 0;}).collect(Collectors.toList());*///方法2 (stream流的排序)List<Date> collect1 = dateList.stream().sorted(Date::compareTo).collect(Collectors.toList());//方法3 直接使用集合的排序函数 两种写法(推荐第二种写法)dateList.sort(((o1, o2) -> o1.compareTo(o2)));// dateList.sort(Date::compareTo);System.out.println(dateList);System.out.println(collect1);
http://www.lryc.cn/news/502863.html

相关文章:

  • PPO系列3 - PPO原理
  • .idea
  • 单片机:实现呼吸灯(附带源码)
  • PostgreSQL数据库序列信息查询
  • 【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】
  • Linux驱动开发(12):中断子系统–按键中断实验
  • 代码随想录-算法训练营-番外(图论02:岛屿数量,岛屿的最大面积)
  • 20 go语言(golang) - gin框架安装及使用(一)
  • 重生之我在学Vue--第3天 Vue 3 模板语法与指令
  • 电脑win11家庭版升级专业版和企业版相关事项
  • docker 架构详解
  • tinyCam Pro 用于远程监控,控制和录制您的私人公共网络或IP摄像机
  • Flask 验证码自动生成
  • vmpwn小总结
  • 开源密码管理器 Bitwarden 一站式管理所有密码以及 2FA
  • 标准体重计算API集成指南
  • 多个终端查看的history不一样,如何确保多个终端会话之间的 history 一致,减少历史记录差异
  • Spring Boot整合EasyExcel并行导出及Zip压缩下载
  • Docker 对 iptables 规则的自动配置,这句话是什么意思
  • 使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件
  • 【SpringBoot中出现循环依赖错误】
  • 数据仓库-基于角色的权限管理(RBAC)
  • springboot3整合javafx解决bean注入问题
  • .NET 8 Blazor Web项目中的 .razor 文件与 .cshtml 文件的本质区别
  • SpringBoot快速使用
  • 【C语言实现:用队列模拟栈与用栈模拟队列(LeetCode 225 232)】
  • 远程控制软件对比与使用推荐
  • vue canvas 绘制选定区域 矩形框
  • 【SpringCloud】OpenFeign配置时间Decode
  • Xerces-C,一个成熟的 C++ XML 解析库!