Lv.1 野郎のプログラミング日記 IT 2023/11/28
はじめに
どうも、きゅうちゃんです。久々に備忘録残します。
最近勉強しろってご指摘いただいたので、簡単に残そうかと思います。
Stream API
最近Javaでstream,filter,,,やらよく使う。また忘れそうなので、簡単にまとめる。
下の記事がわかりやすかった。
上の記事と同じになってしまうが、要素のストリームに対する関数型の操作をサポートするクラスらしい。
確かにfilterで条件絞ったり、sortをするのに1行で簡潔にまとめられるから簡単だった。(初見だと理解するのに時間かかったけど)
記事に記載されている通り、for文を書くことは少なくなった。
Stream APIの記述
記事から引用。。。
List<String> animals = Arrays.asList("ape", "bear", "cat", "cow", "camel", "dog");
animals.stream() //Streamを取得
.filter(s -> s.startsWith("c")) //'c'から始まる動物の文字列を抽出
.map(s -> s.toUpperCase()) //大文字に変換
.sorted() //自然順序でソート
.limit(2) //上位2件を抽出
.forEach(System.out::println); //出力 -> CAMEL, CAT
stream()を見たときにどういう概念すらあやふや。(今でもわからぬ)
そんな時は「こういう魔法をかけました!」という感じで覚えとく。
stream()ってList専用の機能っぽい感じですかね?
余談ですが、ラムダ関数って最近出た機能(?)らしい。
先輩は「若者が使う関数」とかおっしゃってた。
イメージ的には「s」って仮の入れ物?というイメージ。
イメージしづらいけど1行でfor文回すために仮の変数使ってる~、みたいな。
今のところお世話になったのはfilter,sorted,foreach...とか?
sortedはComparator.reverseOrder()使ってたんですけど、引用で持ってきたのはないようでs...と思ったら下の方に記載ありました。なんて優良記事なんだ...
他にも私が使ったことないメソッドありましたので、確認してみてくださいませ。
覚えといたらお得な情報
ここからは私情コーナー。
{Stream生成} → {中間操作} → {終端操作}
これは最初に記載するべきだった...(>< ;)
中間操作はいくらでも記載できるが、終端操作は1つまでらしい。
こういう構成が記載があるとわかりやすい!
まとめ
StreamAPIは慣れればとても扱いやすい。
今まで複数行で書いていたコードが1行で記載できるのが素晴らしい...
最初に話した通り、勉強しろとご指摘いただいたので今日から毎日備忘録記載できればいいな!と思ってる。