2011-09-17 90 views
0

我有一个问题,我想排序格式= 2011-07-18T10:39:31.855Z日期的字符串Arraylist与日期格式化程序在java的帮助。但不知道该怎么做?任何人都可以告诉我如何使用自定义格式的日期格式化程序进行数据排序?日期排序与日期格式化程序的帮助

请帮我解决这个问题。

在此先感谢。

回答

0

既然你在你的问题中说明您已拥有的ArrayListStrings,你表明字符串是已经格式化ISO8601所有日期,你的任务很简单:只是排序的ArrayList原样。

那就是one of the many benefits of ISO8601

维基百科:年,月(或周),日,小时,分钟,秒和第二的分数:

的日期和时间值从最高到最低显著组织。该表示的字典顺序因此对应于时间顺序,除了涉及负数年份的日期表示之外。这允许日期自然地由例如文件系统排序。

的详细信息:

List<String> dateStrings = Arrays.asList(
    "2011-07-18T10:39:31.855Z", 
    "2012-09-18T10:19:31.855Z", 
    "2011-07-18T10:39:31.055Z", 
    "1903-12-01T00:39:31Z", 
); 
Arrays.sort(dateStrings); 
// now dateStrings is sorted by date. 

同样这里的想法是,你不必将字符串转换为日期,进行排序。另外,如果您的列表包含实际的Date对象,那么您也可以致电Arrays.sort,并且您的列表也会被正确排序,因为日期在Java中是可比较的。但是你的问题是关于字符串和ISO8601中的字符串问的,所以如果这是你问题的一个重要部分,那么你可能会利用格式的好处。 TL; DR你不需要一个日期格式来排序。

+0

什么是ISO8601,我该如何排序这种格式? –

+0

为我的回答添加了链接和更多描述。 –

0

只需格式化所有日期即可进行排序:年份第一,然后是2位数月份等。示例格式字符串:“yyyy-MM-dd hh:mm:ss”。

然后只对字符串进行排序,例如通过使用TreeSet。

+0

你能告诉我; TreeSet如何用于排序? –

+0

那么,TreeSet保持排序顺序的数据。所以,如果你有一个TreeSet的字符串,并且你遍历它的元素,它们将以排序顺序出现。 – Macondo2Seattle

0

您可以使用这种类型的排序。

ArrayList arrayList = new ArrayList(); 

//Add elements to Arraylist 
arrayList.add("1"); //1->> you can add you data format by function or static 
arrayList.add("3"); 
arrayList.add("5"); 
arrayList.add("2"); 
arrayList.add("4"); 

/* 
To sort an ArrayList object, use Collection.sort method. This is a 
static method. It sorts an ArrayList object's elements into ascending order. 
*/ 
Collections.sort(arrayList); 

//display elements of ArrayList 
    System.out.println("ArrayList elements after sorting in ascending order : "); 
for(int i=0; i<arrayList.size(); i++) 
    System.out.println(arrayList.get(i)); 

您还可以点击链接,这对您更有帮助。 Link1Link 2Link 3