私はパラメータStream<Double> stream
をとる静的メソッドを持っています。 arraylist.stream()
またはArrays.stream(array)
から来ています。ラムダ式をメソッド参照と置換える
このメソッドの仕事は、3で割り切れるすべての整数の合計を返すことです。
return stream.filter(i -> i.intValue() % 3 == 0).mapToInt(i -> i.intValue()).sum()
このメソッドは動作しますが、しかし、IntelliJのは、次のことを示唆している:
この検査は、メソッドの参照に置き換えることができますラムダを報告します。
私はメソッド参照、特にクラス名を使用している参照インスタンスメソッドにあまり慣れていません。
私はエラーを出す次のことを試しました。
stream.filter(i -> i.intValue() % 3 == 0).mapToInt(Integer::intValue).sum()
任意の提案ですか?
'i'はDouble型なので、' Double :: intValue'を使うべきです。 IntelliJは検査だけでなく変更を提案します。ちょうどalt-enterを押す。 – mrjink
IntelliJがそのような置換を提案した場合、その置換を*行う*ことができます。ところで、 '.mapToInt(Double :: intValue).filter(i - > i%3 == 0)' – Holger
@Holgerは、一度だけunboxする方が効率が良いでしょう。四捨五入はintに倍増し、それは3で割り切れ、結果を変更しますか? –