Beim Sortieren einer Liste gibt es Leistungsunterschiede zwischen der Verwendung eines Java-Comparators inline (mit einer anonymen inneren Klasse) oder der Implementierung einer separaten benutzerdefinierten Vergleichsklasse?Inline-Vergleich zum benutzerdefinierten Vergleicher in Java
1.
public class SortByErrorComparator implements Comparator<WorkflowError> {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
}
Collections.sort(list, new SortByErrorComparator()) ;
2.
Collections.sort(list, new Comparator<WorkflowError>() {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
});
Auch wenn wird die compare()
Methode aufgerufen werden?
Sie möchten vielleicht diese Antwort auschecken: http://StackOverflow.com/a/5468644/423991 –
Da die Arbeit nach der gleichen Methode durchgeführt wird: Warum sollte es einen Unterschied geben? Und der Aufruf hängt vom Sortieralgorithmus ab - wann immer zwei Elemente in der Sammlung verglichen werden müssen. Und dann, zu einem gewissen Grad, der anfänglichen Reihenfolge der Daten. – laune
"wenn diese Methode aufgerufen wird" - möchten Sie vielleicht über [Vergleichssortierung] (https://en.wikipedia.org/wiki/Comparison_sort) lesen. –