【发布时间】:2016-11-18 02:18:52
【问题描述】:
我正在尝试将以下逻辑转换为可能使用 Guava 集合,但无法确定哪个最适合 - 过滤或转换。即使多步骤如何确保发生过滤的列表建立在自身之上。
Map<Long, Detail> map = new HashMap<>();
for (Detail detail : detailList) {
if (map.containsKey(detail.getAppId())) {
Detail currentDetail = map.get(detail.getAppId());
if (detail.getCreatedOn().before(currentDetail.getCreatedOn())) {
continue;
}
}
map.put(detail.getAppId(), detail);
}
return new ArrayList<>(map.values());
Detail 只是一个具有 Long appId 和 Date createdOn 的类。
是否有可能将此特定逻辑转换为基于 Guava 的逻辑。
代码说明:从 Detail 对象列表中,找到每个 appId 最近创建的对象。如果 appId 包含多个详细信息,则只选择最新的。
只能使用 Java 7
【问题讨论】:
-
这真的不能作为一个视图集合工作,这是 Guava 内置的。 这些操作中的任何一个都不允许您以任何方式组合值。您当前的方法可能是自 Java 7 以来最好的方法。(如果您有 Java 8,那可能是另一回事了。)
标签: java list dictionary collections guava