2011-09-17 3 views
0

자바에서 날짜 포매터의 도움으로 format = 2011-07-18T10 : 39 : 31.855Z로 날짜의 문자열 Arraylist를 정렬하려고하는데 문제가 있습니다. 그러나 어떻게 해야할지 모르겠다. 아무도 말해 줄 수 데이터 정렬을위한 사용자 지정 형식으로 날짜 포맷터를 사용하는 방법?일자 포매터에 대한 도움말로 날짜 정렬하기

이 문제에 대해 저를 도우십시오.

미리 감사드립니다. -그대로 단지의 ArrayList를 정렬 :

답변

0

당신은 이미 ArrayListStrings의를 가지고 있고, 당신이 문자열이 이미 ISO8601에 서식하는 모든 날짜가 보여 그 질문에 언급하기 때문에, 당신의 작업은 매우 간단합니다 .

즉, 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 번으로 전화를 걸면 목록이 올바르게 정렬되기도합니다. 날짜가 자바와 비슷하기 때문입니다. 그러나 귀하의 질문에 ISO8601의 문자열과 문자열에 대한 질문이있었습니다. 이것이 문제의 중요한 부분이라면 형식의 장점을 활용할 수도 있습니다. TL; DR에는 정렬 할 때 dateformat이 필요하지 않습니다.

+0

ISO8601은 무엇이며이 형식으로 정렬 할 수 있습니까? –

+0

내 답변에 링크 및 추가 설명이 추가되었습니다. –

0

모든 날짜의 형식을 정렬 할 수있는 형식으로 지정하십시오. 년, 2 자리 월 등. 예제 형식 문자열 : "yyyy-MM-dd hh : mm : ss".

그런 다음 문자열을 정렬하십시오 (예 : TreeSet를 사용합니다.

+0

당신은 저에게 말해 줄 수 있습니까? SortSet에 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)); 

당신은 또한 더 도움이되는 링크를 따라갈 수 있습니다. Link1, Link 2Link 3