Collections.sort() について
その中で、
Collections.sort(List
について調べたことをメモします。
・Comparator??
値の比較を実装できる、関数型インターフェースの1つです。CollectionsやArraysのsort()に渡すことで、リストなどのソートを実行できます。
ちなみに、? super T という書き方は、「下限境界ワイルドカード」というもので、T、もしくはその先祖クラスを意味しているそうです。
Java - Comparatorの<? super T>の意味|teratail
関数型インターフェースって、メソッドは抽象メソッドを1つだけもつもの、と学んだ気がしたのですが、Comparatorは普通の(?)メソッドをいろいろ持っていました。
「抽象メソッドは1つだけ」ということかもしれません。
Comparatorの抽象メソッドは
int compare (T o1, T o2)
という形式です。
Comparator (Java Platform SE 8)
・コーディング例
int[] numbers = {1, 3, -6, 0, -99}; List<Integer> numList = new ArrayList<>(); for(int num : numbers) { numList.add(num); } Collections.sort(numList, (a, b) -> { return a - b; }); for(Integer num : numList) { System.out.print(num + " -> "); } //
sortメソッドの第2引数ではラムダ式を渡しています。
以下のようなインスタンスを作成しているイメージですね。
比較式自体をsortメソッドに渡すことで処理が簡潔に表現されたと思います。
Comparator<Integer> comp = (a, b) -> {return a - b; };
なおラムダ式の学習にあたってはQiitaの以下の記事がとても参考になりました。
qiita.com
年末年始はアウトレイジを見る予定です。
https://xn--outrage-movie-224l4a5a12azjmy.jp/