2016-11-20 2 views
0

J'ai un arraylist de Joda DateTimes comme ceci:Joda DateTime tri du tableau de tableau par date temps

List <DateTime> nextRemindersArray = new ArrayList<DateTime>(); 
nextRemindersArray.add(reminderOneDateTime); 
nextRemindersArray.add(reminderTwoDateTime); 
nextRemindersArray.add(reminderThreeDateTime); 

Je suis en train de trier les dates dans l'ordre croissant, mais je ne parviens pas à:

I googlé et trouvé cette page:

https://cmsoftwaretech.wordpress.com/2015/07/19/sort-date-with-timezone-format-using-joda-time/

Je l'ai essayé comme ceci:

nextRemindersArray.sort(nextRemindersArray); 

Mais il me donne l'erreur:

Error:(1496, 37) error: incompatible types: List<DateTime> cannot be converted to Comparator<? super DateTime> 

J'ai alors essayé comme ceci:

DateTimeComparator dateTimeComparator = DateTimeComparator.getInstance(); 
nextRemindersArray.sort(nextRemindersArray, dateTimeComparator); 

et aussi comme ceci:

nextRemindersArray.sort(nextRemindersArray, new DateTimeComparator()); 

mais tous ont des erreurs.

J'ai essayé le manuel du temps Joda et ce n'était pas beaucoup d'aide. Comment trier le tableau?

Merci d'avance pour votre aide

Répondre

2

Ce que vous recherchez est:

nextRemindersArray.sort(DateTimeComparator.getInstance()); 

Mais parce que DateTime implémente déjà Comparable, vous ne avez pas vraiment besoin d'un comparateur et vous pouvez simplement utiliser:

nextRemindersArray.sort(null); //uses natural sorting 
//or probably more readable 
Collections.sort(nextRemindersArray); 

Notez qu'un coup d'œil rapide à the documentation of List::sort vous aurait montré que la méthode attend un seul argument et il doit être un comparateur (et pas deux arguments comme dans votre question).

+0

Génial merci beaucoup! –