タグ

Stream APIに関するyassのブックマーク (3)

  • Streamの平均を求める処理が精度が高かった件(総和も) - きつねとJava!

    昨日,JavaDayTokyo2015でProject Lambdaのハンズオンのお手伝いをしてきました. その中で,Collectors#averagingDoubleやDoubleStream#averageの実装が優秀だということが分かったので,まとめておきます. 結論を先に言うとStreamAPI*1が優秀なので,それを使おうという話です. *2 普通の実装の話 よくサンプルで出てくる,ある数列から平均値を求める処理は以下のようになっていると思います. また,おそらく普通のプログラマに平均値を求める処理を書かせても同様なコードを書くと思います.*3 double[] array = {...}; double sum = 0; for (int v : array) { sum += v; } double ave = sum / array.length;実はこれは精度が低く,実

    Streamの平均を求める処理が精度が高かった件(総和も) - きつねとJava!
  • 問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時 - ブログなんだよもん

    ※ サンプルがJDK7までとJDK8までで意味が変わっていてわかりにくいという指摘があったので、少し直しました。 ※ boxedを使う書き方だと無駄なAutoboxingが走るとの指摘を頂きましたのでmapToObjを利用するように変えました。 Java8の目玉機能の一つにStream APIがあります。 目玉機能だけあって、先日のJava Day Tokyo 2014を含めて色んな所で発表やブログの記事が公開されているので、どんなものかを知ってる人は多いと思います。 Stream APIといえば「".parallel()"と書くだけで並列化してスピードアップ出来る!」という魅惑的なキーワードで紹介されることが多いので、並列化のための仕様だと勘違いされそうですが、そうではありません。 ※ もちろんそういった記事の中をちゃんと読めばそう単純な話じゃないことも分かります。 むしろ、並列化に関し

    問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時 - ブログなんだよもん
  • forEach書いたら負け、for文禁止 - torutkのブログ

    日は日Javaユーザーグループ(JJUG)主催のクロスコミュニティカンファレンス2014春に参加してきました。今日の日記は、参加内容のまとめではなく、参加して得たことやそれをきっかけに考えたことなどをだらだらと書き連ねます。 Java SE 8では、forEach書いたら負け、for文禁止 日記のタイトルは、午前のセッション「K-1 詳説 Java SE 8 – CCC Edition」で出た話題です。手続き的なロジックを書いて、ネストが深く制御構造が複雑になってしまう人向けにはJava SE 8で導入されたラムダ式とStream APIを使って、内部イテレータと関数型プログラミングのエッセンスを取り入れた書き方をするといいよ、という話から出た言葉です。 実は昨日開催したJava読書会(「Java 8 Lambdas」を読む会)でも、「for文は禁止だ!」という話題が出てました。for

    forEach書いたら負け、for文禁止 - torutkのブログ
    yass
    yass 2014/05/19
    " ソフトウェア工学的な視点からは、/ 品質の違いは明らかです。「ラムダ式禁止」を危惧する声を聞きますが、欠陥予防により品質改善を推進する組織であれば、むしろ「ループ禁止」を導入するのではないでしょうか。"
  • 1