”Java8のStreamを使いこなす”に関する議論
java8のstreamのreduceの使い方がイマイチようわからん。1引数のと2引数のはわかるんだけど。3引数のやつのcombinerには何指定するんだろ
2013-05-04 21:49:35平行じゃないほうのstreamだと、reduce(init, accum, comb);でaccumしか呼び出されないけど、parallelStreamだとaccumはmapのような扱いでcombでreduceされる感じ。
2013-05-04 21:58:38って、えーこのreduceの動きいいの?streamかparallelStreamかで与えるべきパラメータが違うのって、すげー使いにくいんじゃ
2013-05-04 22:01:07やっと3引数reduceの使い方わかった。最初の引数は、単位元である必要があるのだな。で、2番目の引数にあたえるaccumは与えられた引数に対して副作用があってはいけない。
2013-05-04 22:47:15「無限ストリーム」でぐぐると、無限チューンのホンダ ストリームばっかり出てくるから、無限リストという言葉を使わざるをえない。あとはホンダからリストという車が出ないことを祈るばかりである
2013-05-05 05:21:40Java8のStreamについてまとめた 「Java8のStreamを使いこなす - きしだのはてな」 http://t.co/8s176AnrGm
2013-05-05 06:40:14「Javaを使い続ける領域において」っていうコメントがついてるけど、たくさんのサーバーがJavaで書かれている状況で、parallelStream使えば手軽にコレクションの並行処理が書けるってのは、非常に有用なことだと思う。
2013-05-05 17:54:45streamつかったときの可読性の低さって、「手続きを見ようとした場合の可読性の低さ」であって、やりたいことの可読性としてはstreamのほうが高い。
2013-05-05 21:29:37細かい例外制御したり、手続きが正しいか検証したりするには、手続き型で書いたほうがやりやすいというか、実際の手続きが隠蔽されるstreamの書き方では難しい。その必要性がどれだけあるかって話でもあるけど。
2013-05-05 21:30:01まあ、streamで書いたときに単純に「可読性が低い」って言ってるのは、「いままでの手続き型の可読性とは違う」と言ってるだけで、「おれにとっての可読性が低い」という以上の意味はないと思う。
2013-05-05 21:31:49「恥ずかしくなって猫の写真に置き換えました。」ほんとにネコになってるww 「Java8のStreamを使いこなすをC#で - 猫とC#について書くmatarilloの雑記」 http://t.co/xG9Zy9gFfE
2013-05-05 22:54:38Java8のエントリを書いて思うのは、Javaプログラマに関数型の考え方を持ち込むためにはlambda構文が必要だった、ということだな。これまでJavaプログラマで関数型言語の考え方を得た人の多くは、Javaプログラマではなくなってしまってるしw
2013-05-05 22:59:41あと、並行ストリームのベンチも。それはそうと、コーディング規約でLambda禁止になる気配を感じるコードになったw 「Java8のStreamの目的と書きやすさ、可読性について - きしだのはてな」 http://t.co/VFoCPgRWiB
2013-05-06 08:06:37@makotan ではそれで書き直そう・・・と思ったけど、結構頭のほうにTimeUnit.MICROSECONDS.toSecondsつけないといけなくて、lambda記述が見にくくなるからやめたw
2013-05-06 08:49:21@makotan Optionalがmapできれば、map(TimeUnit.NANOSECONDS::toSeconds)って書けてかっこいいんだけど。
2013-05-06 09:00:29@makotan zipでprintlnするってことだよね?そうすると、なんらかどうでもいい値を返す必要がでてくるし、出力処理はzipとは分けたいし。
2013-05-06 09:11:21