2010-05-07 174 views
0

我有一个从包含date-timestamp作为字符串值的服务返回的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中获取最新的时间戳。

我需要从此ArrayList选择最新的时间戳在Java中6

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

+2

什么*确切*你的意思是“日期时间戳”?这不是Java类型。 – 2010-05-07 16:41:27

+0

修改了它 - 它实际上是字符串值 – rob 2010-05-07 16:47:16

回答

0

假设你的意思是ArrayList包含日期对象(即它的类型是ArrayList),你可以简单地使用Collections.sort()

如果列表中包含长值(即时间戳值),同样的事情会工作。

编辑:加入一个javadoc链接到Collections.sort()方法


附加编辑:

有关更多澄清比较:

你会做一个比较对于您的ObjectHistory类:

public class ObjectHistoryComparator impelements Comparator<ObjectHistory> { 
    public int compare(ObjectHistory o1, ObjectHistory o2) { 
     return o1.getDateTime().compareTo(o2.getDateTime()); 
    } 
} 

这样做有什么对你是可以让你使用datetime格式的默认的比较(无论它是一个字符串或其他),然后就可以进入分拣机这样的:

Collections.sort(array, new ObjectHistoryComparator()); 

希望这有助于出去。

+1

对于字符串也应该有效,如果它们的格式如上所示。 – highlycaffeinated 2010-05-07 16:43:42

+0

谢谢,所以我做了一个collections.sort()并获得第一个? – rob 2010-05-07 16:47:51

+0

http://java.sun.com/javase/6/docs/api/java/util/Collections.html#sort(java.util.List,%20java.util.Comparator) 还有java doc - 它会告诉你它是上升还是下降。测试它的一个好方法是简单地尝试一下,调试或打印数据,你会发现 – aperkins 2010-05-07 16:52:21

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); 
0

对于8601个日期转换你的ISO为Java日期时间对象,你可能需要看看Joda Time库。