Ho una lista di oggetti ordinati per un parametro di data e voglio riordinarli per parametro di categoria, ma mantenendo l'ordine di data all'interno della categoria.Collections.sort conserva l'ordine su elementi uguali?
È qualcosa del genere abbastanza o devo implementare un comparatore che prende in considerazione la data per gli oggetti della stessa categoria?
// sort the list by category asc(, date asc)
Collections.sort((List<Object>)entries, new Comparator<Object>() {
@Override public int compare(Object elementA, Object elementB) {
return elementA.category.compareTo(elementB.category); // what happens when elementA.category.equals(elementB.category)?
}
});
IMO se hai bisogno di ordinare per qualcosa, ordinare per qualcosa - non lasciarlo al caso, o il risultato di un altro tipo. –
'Collections.sort' usa' Arrays.sort' dietro le quinte, che fa un ordinamento di fusione. Il codice di quell'ordinamento di fusione è [qui] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.mergeSort % 28java.lang.Object% 5B% 5D% 2Cjava.lang.Object% 5B% 5D% 2Cint% 2Cint% 2Cint% 29). – Voicu
È sempre una buona idea leggere il Javadoc per un metodo, prima di chiedere su Stack Overflow esattamente come funziona il metodo. In questo caso particolare, Javadoc risponde alla tua domanda molto, molto chiaramente. –