JDK8 Lambda その他いろいろ なんでもいいから動かしてみる シリーズも6回目となりました。
かなりしつこく引っ張ってます。( ̄。 ̄;)
気にせず今日は 女性同士による売買の合計金額 を計算させてみましょう。
女性の売り手と買い手をフィルタリングして売り値の合計を計算すればよさそうです。
| mylambdaexamples\MyLambdaExamples.java |
// 女性同士による売買の合計金額
System.out.println("\n<-- 女性同士による売買の合計金額 -->");
double sum = sales.filter(s -> s.getBuyer().getGender() == Person.Sex.FEMALE
&& s.getSeller().getGender() == Person.Sex.FEMALE)
.mapToDouble(Sale::getCost)
.sum();
System.out.println((int) sum + "円");
今回も見慣れないものが・・・
mapToDouble() , sum() これらはメソッド名とコードからどういったものかだいたいの想像はつきますね。
いちおう JavaDoc をみてみましょう。
mapToDouble()
public DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
Produce a DoubleStream consisting of the results of applying the given function to the elements of this stream.
This is an intermediate operation.
パラメータ:
mapper– A non-interfering, stateless function to be applied to each element
戻り値:
the new stream
どうやら ToDoubleFunction によって double 型の新しいストリームをつくるようです。(たぶん)
sum()
java.util.stream.DoubleStream
public double sum()
これって・・・
double 型の合計ってことだよね。
こんなシンプルな JavaDoc ってありなんだ。
さて、それでは気になるプログラムの実行結果をみてみましょう。
<– 女性同士による売買の合計金額 –>
3480000円
ちゃんとあってるか確認はしてないが OK としよう!
それにしても非常にシンプルで良いですね!
あっ、お約束を忘れるところでした。
でも、この「JDK8 Lambda その他いろいろ なんでもいいから動かしてみる」シリーズはインターネット上で得た情報を元にそれを少し変更しているだけです。
悲しいことにその情報源は英語なので詳しい内容はわかりません。
よって私の推測で解釈された内容となってますので間違いがあると思います。
Java8 もまだ build83 を使用していますので API の変更により記述方法が変わるかもしれません。
早く正式リリースされて日本語でこの超便利で素敵な新機能を勉強したい今日この頃です。