質問: data.stream().max(Comparator.naturalOrder()); result1.ifPresent(System.out::println); ``` ### 該当のソースコード2 ``` Optional result2 =data.stream().max((d1,d2) -> d1.length() - d2.length()); result2.ifPresent(System.out::println); ``` ### 返り値 ``` ソース1 いあ ソース2 cccc ```
回答: ソースコードの1については、 > > なぜローマ字より先に全角の日本語がかえるのでしょうか? > > > `.max`を取っていますので、返ってくる結果は「辞書順ソート」での**最後のもの**になります。 ソースコード2については、「比較関数が正ならd1を後に、負ならd2を後に」というようにソートしていきますので、長さの順に並びます(これは「習うより慣れろ」の側面も強いです)。