第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java - 按屬性組合和最近日期過(guò)濾對(duì)象列表

Java - 按屬性組合和最近日期過(guò)濾對(duì)象列表

動(dòng)漫人物 2021-11-24 19:07:24
我有一個(gè)包含屬性名稱、公司和日期的對(duì)象列表。我想過(guò)濾該列表以根據(jù)日期獲取最新的名稱+公司組合。示例數(shù)據(jù):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所需的結(jié)果應(yīng)該是一個(gè)包含 ids 的列表:1、4、5 和 7。如果名稱 + 公司組合不存在,我可以查看列表中的每個(gè)項(xiàng)目并將其添加到新列表中,如果存在,請(qǐng)檢查日期以查看是否應(yīng)替換現(xiàn)有的。但我覺(jué)得應(yīng)該有一種更簡(jiǎn)單的方法來(lái)通過(guò)流和過(guò)濾器來(lái)做到這一點(diǎn)。我就是想不出來(lái)怎么辦。搜索提供了諸如 Collections.max 之類的方法,但我想要一個(gè)基于組合的最大值列表。這些是 java 構(gòu)造的對(duì)象,而不是持久化的實(shí)體,否則我會(huì)做這樣的事情:GROUP BY with MAX(DATE)。但我想完成同樣的事情。是否可以使用過(guò)濾器來(lái)做到這一點(diǎn),還是我唯一的選擇是長(zhǎng)途?
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

您想使用 Collectors API 中的 groupingBy 方法。它允許您提供一個(gè)基于流中對(duì)象創(chuàng)建鍵的功能,然后為您提供 Map>。你會(huì)得到一個(gè)類似的代碼:


Function<YourObject, String> keyGen = o -> o.getName() + o.getCompany();

Comparator<YourObject> comp = (f1, f2) -> f1.date().compareTo(f2.getDate()

yourObjects.stream().collect(Collectors.groupingBy(keyGen)).values().stream().map(list -> Collections.max(list, comp)).map(MyObject::getId).collect(Collectors.toList());


查看完整回答
反對(duì) 回復(fù) 2021-11-24
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)