Java の stream は RuntimeException しか投げられない2025年02月14日 13時27分47秒

Java に stream が導入されて、ループに変わって stream で順次処理するのをよく目にする様になった。イテレータやループ等のようにブロックを書くのではなく、関数を連結するコードなのでスッキリした見た目。

stream は面白いが、2つの欠点がある。

1つ目は普通の Exception を投げられない事。stream 内で Exception を投げる関数を呼ぶ時にはラムダ関数を使って catch しなければいけないので、せっかくスッキリしたコードが分厚くなる。こちらは、結構大きい問題。RuntimeException ばっかり投げるコードだと、どこでどの様な問題が起きるか、例外処理がされているかが分かりづらいので、個人的には RuntimeException は投げたくない。そうなると、必然的に stream が使いづらくなっていく。

2つ目は複雑な削除が難しい事。処理している最中の要素だけだったら filter 等で簡単に落とせるし、iterator や for-each ループでも簡単。しかし、前後の要素等にも参照してする様な複雑な削除は iterator になる。こちらは滅多にやら無い処理なので、

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2025/02/14/9754575/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。