【发布时间】:2020-10-06 00:59:33
【问题描述】:
假设我在 DB 的表中有以下记录。
这里 Emplid 和日期组合是我的 PK。 每次更改时,我都会维护记录的版本。 (在最后 3 行中,总共有 3 个版本作为数量变化)。
现在我想获取最新版本的记录 where emplid = 1111 date = 28-02-2019(用户不知道 db 中有多少个版本)。
如何使用 lambda 表达式来做到这一点。
HrcKey matchedKey = hrcKeyList.stream()
.filter(x -> (currEmplid.equals(x.getEmplid()) &&
format.format(updateListFromUI.getDate())
.equals(format.format(x.getDate()))))
.findFirst()
.orElse(null);
这会给我版本 1。 但是我怎样才能获得最新版本。
【问题讨论】:
-
按
findFirst()之前的版本排序 -
不,实际上为了按版本排序,我需要 HrcRestatementKey 中不存在的版本字段(由用户提供)。
-
如果您的数据源是数据库,为什么不使用 SQL 并编写一个查询来返回您需要的数据? SQL 在这方面非常擅长。或者这纯粹是一个使用 Java 的流 API 的练习?
-
您的日期字段的类型是什么?为什么不对它们使用
equals而不是比较格式化字符串?
标签: java lambda java-8 java-stream comparator