我有一个MyData
的List
,如下所示。
它由多行 MyData 对象组成。
有些具有相同的key
,但不同的date
和name
public class MyData {
String name;
String key;
String date;
// ... constructor and other codes omitted here
}
List<MyData> myDataList;
我正在考虑根据最新的日期
将列表修剪为不同的key
例如如果我有
*Name* *key* *date*
ABC 12 2016-10-09
FGH 10 2016-10-18
IJK 10 2016-10-08
DEF 12 2016-10-19
那么修剪结果应该是
*Name* *key* *date*
DEF 12 2016-10-19
FGH 10 2016-10-18
通过算法实现此目的的最佳方法是什么?
注意:我使用的是 Java 7,无法使用 Java 8 的 Stream 功能。(这是针对 Android 开发的,尚不支持 Java 8)。
最佳答案
假设您对 date
属性使用真实日期类型,您可以这样做:
private Collection<MyData> trim(List<MyData> data) {
Map<String, MyData> result = new HashMap<>();
for (MyData item : data) {
MyData lastItem = result.get(item.getKey());
if (lastItem == null || lastItem.getDate().before(item.getDate())) {
result.put(item.getKey(), item);
}
}
return result.values();
}
您可能可以使用流达到相同的结果。
关于java - 将 Java ArrayList 修剪为具有最新日期的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283689/