返回列表中的日期比较

时间:2010-05-07 16:38:02

标签: java arraylist

我有一个从服务返回的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中选择最新的时间戳。

我该怎么做?我应该将这些值转换为日历时间吗?我处于恐慌模式,因为这必须直接在生产中完成。

3 个答案:

答案 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库。