ArrayListのオブジェクトの値をソートし、1つのラムダでそれらの複数の印刷

DrAhzek:

名前(文字列)、ヘアカラー(列挙型) - - ArrayListの中で特定のオブジェクトを記述私の目標は、4のうち2つの値をプリントアウトすることです。問題は、名前のアルファベット順に印刷されたリストをソートしてあります。それはすべて1つのラムダでなければなりません。

私はちょうどソートせずに、それをプリントアウトして立ち往生しています。私はすでにオーバーライドを設定しているが、私はまだ学んでいることから、私はそれが仕事を得るように見えることはできません。

public void printAllNamesColours() {
        people.stream()
            .forEach(n->System.out.println(n.getName() + " " + n.getColour()));
    }

@Override
public int compareTo(Person person) {
        int ret = name.compareToIgnoreCase(person.name);
        if (ret == 0) {
            ret = colour.compareTo(person.colour);
        }
        if (ret == 0) {
            ret = age - person.age;
        }
        return ret;
    }
また:

あなたは使用してそれを並べ替えることができますStream.sortedよう:

people.stream()
      .sorted() // considering your `compareTo` implementation
      .forEach(n -> System.out.println(n.getName() + " " + n.getColour()));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222016&siteId=1