質問: LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する // 月から6を引く LocalDate.of(2016,06,26).minusMonths(-6) .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する return resultDate; } //実行時のコード // strListの中から一意の要素を取り出す System.out.println(answer.task4(strList)); // 6ヵ月前の年月日を表示する System.out.println(answer.task5("2016-06-26")); ### 試したこと 参考書やサイトを見ながら自分なりに実装 ### 補足情報(言語/FW/ツール等のバージョンなど) 使用言語:Java 使用ツール:STS 使用OS:Windows10
回答: > > ・引数のリストから最大値を取得させるところの > > Optional max = intLits.max(Comparator.naturalOrder()); > > > のintLits.maxのmaxのところで > > The method max(Comparator.naturalOrder()) is undefined for the type List > > というエラーが出てしまい対処法が不明 > > > ListをStreamに変換しないと、ご提示の操作はできません。 ``` Optional max = intLits.stream().max(Comparator.naturalOrder()); ``` > > ・特定の文字を抽出させる方法が不明 > > > ``` strList.stream().filter(str -> str) // リストの中から"晴れ"のみを抽出 ``` ここでしょうか?filterの引数には条件に合うものにtrueを返すように設計すればいいので、 ``` strList.stream().filter(str -> str.equals("晴れ")) // リストの中から"晴れ"のみを抽出 ``` > > ・偶数のみを格納したリストを > > 結果用のリストに格納させたいが > > (i -> resultList.add(i));のところで > > Multiple markers at this line > > > Syntax error, insert "AssignmentOperator Expression" to complete > > Expression > > Syntax error, insert ")" to complete Expression > > というエラーが出てしまい対処に困っている > > > この直前でセミコロンにより文が切れています。前のStreamに続けて操作しないと意味をなしません。 ``` intList.stream().filter(i -> i % 2 == 0) // 要素を2で割って余りが0の要素を抽出 .forEach(i -> resultList.add(i)); // 結果用リストに格納 ``` ただ、ここや他にもリスト化するのにArrayListを別途用意してStreamから取り出した要素を詰めるという手順を踏んでいるところがありますが、、Streamの要素をList化するのに便利なcollectメソッドがあります。 ``` List resultList = intList.stream().filter(i -> i % 2 == 0) .collect(Collectors.toList()); ``` > > ・引数の月から半年前の日付を表示させる方法(関数)が不明 > > > LocalDateクラスのminusMonthsメソッドを使います。