2017-07-13 11 views
2

どの方法がスピードと快適性を考えるのに最適ですか?アイテム名の長さでリストをソートする最善の方法

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

言語タグを追加してください:

私はこの1行を使用します。 – ayhan

+3

あなたのアプローチはどうですか? – Flown

+3

正しいものから始める(壊れた解決策はあまり価値がない)。その後、読みやすくするために最適化します。これらの2つを釘付けにして、システムのこの特定の部分のパフォーマンスが全体的なボトルネックであることを実証することができます(Googleの「Amdahl's law」)。 – NPE

答えて

10

これは同じです。 Collections.sort方法を見て:

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

すべての3のアプローチは、同じアルゴリズムによって並べ替えられています。

可能な限りコードを書く必要があります。本当に必要でない限り、時期尚早のミクロ最適化をしないでください。

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

+0

ええ、そうです。ありがとう。 – proceder

関連する問題