【发布时间】:2021-11-16 00:19:07
【问题描述】:
今天我试图折叠具有某些特征的对象列表。 我的想法是绝对使用 stream()。
想象一个这样的物体:
public class ObjectA {
private Integer priority;
private LocalDate date;
private String string;
}
我有一个:
List<ObjectA> objects
我想折叠此列表中具有相同日期的对象。如果它们的日期在特定时间窗口内,则仅保留具有最高优先级的日期,如果优先级相等,则属性“字符串”中具有特定常量的日期将从列表中删除。
例如,这个:
window = 1; // days
constantString = "aab";
[{"priority":1, "date":"2021-09-22", "aaa"},
{"priority":1, "date":"2021-09-23", "aab"},
{"priority":1, "date":"2027-10-09", "bbb"}]
变成了这样:
[{"priority":2, "date":"2021-09-23", "aab"},
{"priority":1, "date":"2027-10-09", "bbb"}]
考虑到此列表可能包含许多元素,您认为在效率方面最好的解决方案是什么。
非常感谢您的帮助!
【问题讨论】:
-
如果窗口值为 2 是什么意思?日期为 22. Sep 和 23. Sep 的对象是否属于同一组?
-
在提出问题后完全编辑规格的错误举措!如果两个具有相同优先级的实例都不匹配特定的常量,会发生什么?
-
完全是厄立特里亚人。我为那个 Adriaan 感到抱歉,只是我说了很多次。为了回答你的问题,让我们假设这是不可能的,这就足够了。
-
我建议您尝试自己解决这个问题,如果您还有其他问题,请向我们展示您的代码。
标签: java performance java-8 java-stream filtering