Javaでクラスのソートとか
以前C++でクラスを含んだコンテナのソートをやった
vector<クラス>をソートしたいとき - なんとな~くしあわせ?の日記
Javaでソートをやってみる
ビューから取得したクラスの中身が汚いのでソートしたくなる場合あると思います。
(DBから取得する場合SQLでソートさせるので別に良い…)
また犬小屋(※ソースはリンク先)
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
全部内部クラスで片付けたので、汚くなったのだが要点は以下の部分
Collections.sort(list, new Comparator() { @Override public int compare(Object o1, Object o2) { Inner l = (Inner)o1; Inner r = (Inner)o2; Integer i1 = l.getNumber(); Integer i2 = r.getNumber(); return (i1<i2 ? -1 : (i1==i2 ? 0 : 1)); } });
new Comparator()でまるで関数を引数に入れているように見えるが、これが内部クラス
参考:Javaクラス使用メモ(Hishidama's Java Class use Memo)
CollectionsってやつがいわゆるGenericというやつでC++のSTLみたいに、型をある程度気にせず操作を行える。
相変わらずHishidama氏のサイトは詳しい
参考:Java総称型メモ(Hishidama's Java Generics Memo)
C++でラムダ式を使ってみる
この前はファンクタとか使ったけど、やっぱラムダっしょ。
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
この方がなにげにかっこいい
std::sort(list.begin(), list.end(), [] (const Inner& l, const Inner& r) -> bool { return l.getNumber() < r.getNumber(); }); for (Inner in : list) { std::cout << in.getNumber() << std::endl; }