我有一个从服务返回的ArrayList,它包含日期时间戳作为字符串值(值为:2010-05-06T23:38:18,2010-05-06T23:32:52,2010-04-28T18:23 :06,2010-04-27T20:34:02,2010-04-27T20:37:02)
更具体,这是父ArrayList ObjectHistory的一部分。此列表包含日期戳和序列号。我需要选择正确的序列号。
Objecthistory是List对象,我需要获取此ObjectHistory中的最新时间戳。
我需要从Java 6中的这个Arraylist中选择最新的时间戳。
我该怎么做?我应该将这些值转换为日历时间吗?我处于恐慌模式,因为这必须直接在生产中完成。
答案 0 :(得分:0)
假设你的意思是arraylist包含Date Objects(即它是ArrayList类型),你只需使用Collections.sort()
如果列表包含Long值(即时间戳值),则同样的事情将起作用。
编辑:添加到Collections.sort()方法的javadoc链接
其他编辑:
有关比较器的进一步说明:
您可以为ObjectHistory类创建一个比较器:
public class ObjectHistoryComparator impelements Comparator<ObjectHistory> {
public int compare(ObjectHistory o1, ObjectHistory o2) {
return o1.getDateTime().compareTo(o2.getDateTime());
}
}
这对您有什么影响,允许您使用dateTime格式的默认比较(无论是String还是其他),然后您可以将其传递给分拣机:
Collections.sort(array, new ObjectHistoryComparator());
希望这会有所帮助。
答案 1 :(得分:0)
我会使用TreeMap。例如,
TreeMap<String, String> map = new TreeMap<String, String>();
map.put(timestamp1, serial1);
map.put(timestmap2, serail2);
...
String latestTimestamp = map.lastKey();
String latestSerial = map.get(lastestTimestamp);
答案 2 :(得分:0)
要将ISO 8601日期转换为Java日期时间对象,您可以查看Joda Time库。