Collections.sort

結構長いこと Java で仕事をしているんだが・・・Collections.sort があることを初めて知った・・・orz まじで恥ずかしい。
個人的にメソッドの戻り値を List で返すのは何が入っているのか分からないので(Java 1.4だし) 配列で返すようにしてます。ローカル変数の List で持っていても最後は List#toArray で配列に変えた後に Arrays.sort してるのが大概。それでも特に困ることは無かったけど、List のままソートできたらいいのになぁと思ってはいた orz
さっそく手元の Java5 ソースを見てみる。

  • Collections.sort
public static <T> void sort(List<T> list, Comparator<? super T> c) {
  Object[] a = list.toArray();
  Arrays.sort(a, (Comparator)c);
  ListIterator i = list.listIterator();
  for (int j=0; j<a.length; j++) {
    i.next();
    i.set(a[j]);
  }
}

内部的に List#toArray した後に Arrays.sort を呼び出してるという特に便利そうなことは全くなかったというオチ。