読者です 読者をやめる 読者になる 読者になる

なんとな~くしあわせ?の日記

ClojureとかAWSの設定とかをメモする技術ブログ

Javaでクラスのソートとか

Java C++


以前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;
    }