技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

Javaでラムダ式を使ってListのソートを行う。

競技プログラミングで良く使う List のソートについて書く。

例えば、以下のクラスのインスタンスを保持する List があって、それを age が若い順(昇順)にソートしたいとする。

    class Person {
        String name;
        int age;
        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

そんな時は、Java8から導入されたラムダ式を使うと、

    persons.sort((a, b) -> a.age - b.age);

といった感じで簡単に書ける。降順にソートしたい時は、

    persons.sort((a, b) -> b.age - a.age);

とすれば良い。

以下は実装例。

        // ソート対象の準備
        List<Person> persons = new ArrayList<>();
        persons.add(new Person("Taro", 20));
        persons.add(new Person("Saburo", 16));
        persons.add(new Person("Jiro", 18));

        // ラムダ式を使って age の昇順でソートする。
        persons.sort((a, b) -> a.age - b.age);

        //Saburo: 16, Jiro: 18, Taro: 20 の順に出力される。
        persons.forEach(person -> System.out.println(person.name + ": " +person.age));