今週もお疲れ様でした。
Javaネタですが、まとめたりするつもりは無いのでタイトルは独り言系です。
Java8のstreamについて、少し魅力がわかった気がします。(遅いのは重々承知で)
色々な機能があるのはウェブを検索すれば様々なサンプルなどがヒットするわけですが、
実際に自分が使ってみると、惹かれて行く感覚を味わうことができます!!
作成日記ネタと少し関わるのですが、
int型の配列を二つ引数に取る関数で、
その配列は、互いに全て同じ数字が同じだけの量入っていれば処理を行い、
条件を満たさない場合は引数例外としてIllegalArgumentsExceptionを投げるというものを作成しました。
([2,2,2], [5,5,5]ならOKといった感じですね)
で、中身の数字が同じかどうかを判断するのにどうしようか迷って、
Arraysクラスに使えそうなのがないかを探っていると、特別該当しそうなものはありませんでした…。
ただ、IntStreamを取得できるではないですか。
使ってみれば、distinct()とかいう何だかメソッド名だけでやりたいことに繋がりそうな存在が…!
使ってみればこの子は中間操作だとか。
再度"."で繋げてメソッド一覧を見るとcount()の存在が…!
↓イメージこんな感じです
int count = Arrays.stream(new int[]{1, 1, 1}).distinct().count();
…これは短いけど、この繋げていく感覚…結構気持ち良いかもしれない…(//・_・//)
それに、distinct().count()って、何がやりたいのかもわかりやすくて可読性もなかなか(処理速度とかは不明。もっと簡単な良いやり方がある可能性もありですが)。
というか多分forで回す方が間違いなく早いですw
んー・・・Java8は一応、去年から使っていますがもっと早めに勉強しておくべきでしたね。。。
正式公開が約2年前。Java9の正式公開は来年…
次のは直ぐに手をつけて色々理解しながら使いたいですねー♪
以上です。