【发布时间】:2019-03-23 08:11:28
【问题描述】:
我有一个包含属性名称、公司和日期的对象列表。我想过滤该列表以根据日期获取最新的名称+公司组合。示例数据:
id | name | company | date
----------------------
1 | bob | A | 01/2017
2 | bob | A | 01/2016
3 | bob | A | 01/2015
4 | bob | B | 03/2017
5 | sal | B | 04/2018
6 | sue | A | 01/2016
7 | sue | A | 01/2017
8 | sue | A | 01/2015
所需的结果应该是一个包含 id 的列表:1、4、5 和 7。
如果名称+公司组合不存在,我可以检查列表中的每个项目并将其添加到新列表中,如果存在,请检查日期以查看是否应该替换现有的。但我觉得应该有一种更简单的方法来通过流和过滤器来做到这一点。我只是想不出怎么做。搜索提供了 Collections.max 等方法,但我想要一个基于组合的最大值列表。
这些是 java 构造的对象,而不是持久化的实体,否则我会做这样的事情:GROUP BY with MAX(DATE)。但我想完成同样的事情。
是否可以使用过滤器来做到这一点,还是我唯一的选择是长途?
【问题讨论】:
-
我建议你放弃
Stream的想法,寻找更好的数据库检索方法。 -
这些是 java 构造的对象,不是实体,否则我会。
标签: java list filter compare java-stream