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

341 天前
 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] 这种该怎么判断一下

2774 次点击
所在节点    程序员
51 条回复
saveload
341 天前
我会三种写法,每月 8K 笑哈哈
nauhc
341 天前
11 楼把正确答案都写出来了
darkengine
341 天前
还是你真的理解不了 问题呢
--------

看到这句真绷不住了 😂
zmal
341 天前
能上 V2EX ,去 gpt 问问也有答案了啊。
silentsky
341 天前
这个问题太简单 跳过
NickX
341 天前
list 的排序,一楼已经说了,Comparators ,你想根据什么规则排都没问题。简单来说就是 a 和 b 时间取最大值再排序嘛。
forgottencoast
341 天前
@eddiechow
真的,说明眼高手低的人很多。
forgottencoast
341 天前
@zydxn
OP 不是看书的问题,OP 是缺乏基本的编程基础知识。
这个就是最简单的按照行内元素的属性来排序,现代编程语言都会支持的排序。
Alex5467
341 天前
@chendy lamada 表达式
nerkeler
341 天前
这也不是眼高手低的问题,这题的实现思路就没什么难度,总而言之 你要先 给每个 bean 排好序取最新的日期,在用每个 bean 里的最新日期排序
spike0100
341 天前
按照 a 和 b 分别排序,然后对比两个集合的第一个对象就完了。
wxw752
341 天前
@eddiechow #20 10 楼无非就是从小到大排了,想从大到小加个 reversed()不就完事了。
msaionyc
341 天前
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
341 天前
有一个是最新的就在 list 的最前面,坦白说我没有看懂这句话,
vagusss
341 天前
@vagusss 有点懂了, 是取两个值中的最大值进行比较排序?
twofox
341 天前
。。。看到这句真绷不住了 😂

没学过 Comparators 吗
28Sv0ngQfIE7Yloe
341 天前
取 A 和 B 中最新的时间 X ,再按照 X 排下
ZZ74
341 天前
@twofox
绷不住了,看了 OP 回复 1 楼给的提示才是真的绷不住
Goooooos
341 天前
一看就是期末考试题
Navee
341 天前
有两个方法达到你想要的效果
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