2017-07-13 2 views
2

Welcher dieser Wege ist der Beste, wenn man Geschwindigkeit und Komfort betrachtet?Die beste Art, die Liste nach Artikelnamen zu sortieren Länge

names.sort((a,b) -> a.getName().length() - b.getName().length()); 


Collections.sort(names, Comparator.comparing(s -> Celebrity.getName().length())) 


BiFunction<Celebrity,Celebrity,Integer> bifunc = (a,b) -> Integer.compare(a.getName().length(), b.getName().length()); 
Collections.sort(names, bifunc::apply); 
+1

Bitte geben Sie die Sprach-Tag hinzufügen. – ayhan

+3

Warum messen Sie nicht Ihre Ansätze? – Flown

+3

Beginnen Sie mit der Korrektheit (eine kaputte Lösung ist nicht viel wert). Dann für die Lesbarkeit optimieren. Sobald Sie diese beiden genagelt haben und demonstrieren können, dass die Leistung dieses speziellen Teils des Systems ein genereller Engpass ist, profilieren Sie und optimieren Sie für die Leistung (auch Google "Amdahls Gesetz"). – NPE

Antwort

10

Es ist das gleiche. Blick auf Collections.sort Methode:

public static <T> void sort(List<T> list, Comparator<? super T> c) { 
    list.sort(c); 
} 

Alle drei Ansätze mit dem gleichen Algorithmus sortiert werden.

Sie sollten so viel Code wie möglich schreiben. Mache keine vorzeitigen Mikrooptimierungen, außer wenn sie wirklich benötigt werden.

würde ich diese Zeile verwenden:

names.sort(Comparator.comparingInt(celebrity -> celebrity.getName().length()));

+0

Yup, du hast Recht. Vielen Dank. – proceder

Verwandte Themen