[英]Remove elements from List of objects by comparing with another array in Java
[英]Remove from list comparing elements using java 8
我正在嘗試使用 java8 流從對象的基於列表的元素中刪除項目,並且對實現感到困惑。 我有一個帶有 startdate、enddate 和 id 的對象,我想通過檢查 startdate 和 enddate 是否為 eqaul 來將對象與列表中的其他對象進行比較,然后刪除具有最少 id 的對象。
startdate enddate Id
--------- --------- -----
01-01-2018 01-05-2018 1
01-01-2018 01-05-2018 2
01-01-2018 01-05-2018 3
01-20-2018 01-25-2018 4
01-20-2018 01-25-2018 5
然后結果列表將是
startdate enddate Id
--------- --------- -----
01-01-2018 01-05-2018 3
01-20-2018 01-25-2018 5
如果您的對象具有 (int id, Date startDate, Date endDate) 之類的屬性,您可以使用一些容器類(如 Apache Commons 中的 Pair)將它們分組,然后在分組列表中找到最大 id:
originalObjectsList.stream()
.collect(groupingBy(t -> new Pair(t.startDate, t.endDate)))
.values()
.stream()
.map(t -> t.stream().max(Comparator.comparingInt(a -> a.id)).get())
.collect(Collectors.toList())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.