请教个 Java list 处理数据的问题?

2023-12-18 10:44:04 +08:00
 godleon

问题

环境:java ,springboot , jdk8

我现在有个 List<bean> beans ; bean 里有 2 个字段,aTime ,bTime , 都是 java.utile 包下 Date 类型;

我现在的需求是, 我需要对比两个字段,有一个是最新的就在 list 的最前面;

如:bean1 {aTime:2023-12-18 05:00:00 , bTime: 2023-12-18 10:40:00}

      bean2 {aTime:2023-12-18 04:00:00 , bTime: 2023-12-18 11:40:00}

      bean3 {aTime:2023-12-18 11:00:00 , bTime: 2023-12-18 03:40:00}

那么 list 返回 顺序是 [bean2, bean3, bean1] 这种该怎么判断一下

2810 次点击
所在节点    程序员
51 条回复
saveload
2023-12-18 11:46:07 +08:00
我会三种写法,每月 8K 笑哈哈
nauhc
2023-12-18 11:46:34 +08:00
11 楼把正确答案都写出来了
darkengine
2023-12-18 11:50:21 +08:00
还是你真的理解不了 问题呢
--------

看到这句真绷不住了 😂
zmal
2023-12-18 11:54:36 +08:00
能上 V2EX ,去 gpt 问问也有答案了啊。
silentsky
2023-12-18 11:59:21 +08:00
这个问题太简单 跳过
NickX
2023-12-18 12:00:11 +08:00
list 的排序,一楼已经说了,Comparators ,你想根据什么规则排都没问题。简单来说就是 a 和 b 时间取最大值再排序嘛。
forgottencoast
2023-12-18 12:01:55 +08:00
@eddiechow
真的,说明眼高手低的人很多。
forgottencoast
2023-12-18 12:05:17 +08:00
@zydxn
OP 不是看书的问题,OP 是缺乏基本的编程基础知识。
这个就是最简单的按照行内元素的属性来排序,现代编程语言都会支持的排序。
Alex5467
2023-12-18 12:06:57 +08:00
@chendy lamada 表达式
nerkeler
2023-12-18 12:11:43 +08:00
这也不是眼高手低的问题,这题的实现思路就没什么难度,总而言之 你要先 给每个 bean 排好序取最新的日期,在用每个 bean 里的最新日期排序
spike0100
2023-12-18 13:19:17 +08:00
按照 a 和 b 分别排序,然后对比两个集合的第一个对象就完了。
wxw752
2023-12-18 13:38:01 +08:00
@eddiechow #20 10 楼无非就是从小到大排了,想从大到小加个 reversed()不就完事了。
msaionyc
2023-12-18 13:45:12 +08:00
personList.stream().
sorted((a, b) -> (int) (Math.max(b.getaTime().getTime(), b.getbTime().getTime()) - Math.max(a.getaTime().getTime(), a.getbTime().getTime()))).
collect(Collectors.toList());

直接取 aTime 和 bTime 里的较大值去写 comparator 就可以了,验证过了,排序结果符合你的描述
vagusss
2023-12-18 13:50:20 +08:00
有一个是最新的就在 list 的最前面,坦白说我没有看懂这句话,
vagusss
2023-12-18 13:51:53 +08:00
@vagusss 有点懂了, 是取两个值中的最大值进行比较排序?
twofox
2023-12-18 14:08:33 +08:00
。。。看到这句真绷不住了 😂

没学过 Comparators 吗
28Sv0ngQfIE7Yloe
2023-12-18 14:09:56 +08:00
取 A 和 B 中最新的时间 X ,再按照 X 排下
ZZ74
2023-12-18 14:13:34 +08:00
@twofox
绷不住了,看了 OP 回复 1 楼给的提示才是真的绷不住
Goooooos
2023-12-18 14:16:01 +08:00
一看就是期末考试题
Navee
2023-12-18 14:22:41 +08:00
有两个方法达到你想要的效果
1. 你的 bean 实现接口:java.util.Comparator
2. 使用 List.sort 方法,传入 Comparator 函数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1001247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX