2011-09-17 2 views
0

У меня есть проблема с тем, что я хочу сортировать строковый Arraylist of Dates с форматом = 2011-07-18T10: 39: 31.855Z с помощью форматирования даты в java. Но не знаете, как это сделать? Может ли кто-нибудь сказать мне Как использовать форматирование даты с пользовательским форматом для сортировки данных?Сортировка дат с помощью форматирования даты

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

ответ

0

Поскольку вы упоминаете в своем вопросе, что у вас уже есть ArrayList из Strings, и показать, что строки являются все даты, которые уже отформатированные в 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)); 

Вы также можете перейти по ссылке, что более полезно вам. Link1, Link 2 и Link 3

Смежные вопросы