実装を知るって大切 Collections#sort
Listをソートしてくれるのだけれども
Collections#sortはList(正確にはコレクションフレームワーク)をソートしてくれるメソッドなんだけれども、
昔、以下のようなコードを見たことがある。
String[] anArray = getAnArray();
Listlist = Arrays.asList(anArray);
Collections.sort(list);
return list;
仕様としてはレガシーな配列を受け取りソートしてListとして返すだけなんだけれども、
実はよろしくない。
Collections#sortの中身をみる
中身は以下のような感じ。
Object[] a = list.toArray();
Arrays.sort(a);
ListIteratori = list.listIterator();
for (int j=0; j
実は中では一度配列に変換してからソートして、再度Listに詰めなおしている。
ちょっとだけ最適化を試みる
こんな感じに。
String[] anArray = getAnArray();
Arrays.sort(anArray);
Listlist = Arrays.asList(anArray);
return list;
速度的にもリソースの消費量的にもほとんど大丈夫なんだろうけれども、
こういうちょっとした積み重ねでプログラムって重くなっていくんだろうなぁと思って
ずっと心に留めている。
余談だけれども
一度、Listのソートをするのに自前でバブルソートを書いたという話を聞いたことがある。
そんなのは論外。