ネストされたオブジェクトのフィールドを使用して、リストを並べ替えることがComparator.comparing

ジェイコブ:

私は、ネストされたクラスの属性に基づいて以下のように見えるのリストをソートしたいです。

class Test {
      private NestedClass nestedClass;
      private AnotherNested anotherNested;
      private int id;
     //getter, setter
}

class NestedClass {
    private String field1;
    private int field2;
    // getter,setter
}

List<Test> tests = service.getTests(string something);

私がすることによってテストをソートするfield1にはnestedClass使用してComparator.comparingを私はその下に動作していないようです試してみました

tests.stream().sorted(Comparator.comparing(test->test.getNestedClass().getField1()));
また:

あなたは呼んでいるsortedのAPIをStreamしかしにソートされたストリームを収集していないList<Test>さらに。ノーオペレーションは、あなたが同様の理由で使用したコードの行で一切行われません。

代わりに操作を実行するには、かなりの呼び出しされなければならないsortでAPIをListとのインタフェース:

tests.sort(Comparator.comparing(test -> test.getNestedClass().getField1()));

さもないとのような端末操作などのデータを収集し、ストリーム操作を完了します。

List<Test> sortedTests = tests.stream()
        .sorted(Comparator.comparing(test->test.getNestedClass().getField1()))
        .collect(Collectors.toList());

おすすめ

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