b-9channnoblogのプログラミング備忘録

プログラミングの勉強をします。メモを取ります。

Lv.1 野郎のプログラミング日記 IT 2023/11/28

はじめに

 どうも、きゅうちゃんです。久々に備忘録残します。

 最近勉強しろってご指摘いただいたので、簡単に残そうかと思います。

 

Stream API

 最近Javaでstream,filter,,,やらよく使う。また忘れそうなので、簡単にまとめる。 

 下の記事がわかりやすかった。

qiita.com

 上の記事と同じになってしまうが、要素のストリームに対する関数型の操作をサポートするクラスらしい。

 確かに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行で記載できるのが素晴らしい...

 

 最初に話した通り、勉強しろとご指摘いただいたので今日から毎日備忘録記載できればいいな!と思ってる。

スプレッドシート countifでぬまった話。

■あいさつ

どーもみなさんこんにちはきゅうちゃんです。

最近メモや記録管理をするためにスプレッドシートを使い始めました。

そこで、関数を作成中にぬまったことがあったので備忘録として残します。

 

■countifの値が誤っていた

関数countif() の結果と表示されている数が誤っていた。

=countif(E68:E130,"99")

上記のように、「99」のデータをカウントする計算だったが、カウントが1つずれていた。64と表示されるはずなのに、63と表示されていた。

 

■調査結果

原因はデータが一つ足りていなかった。

不具合を発見した時は「関数の参照セルが誤っているかもしれない」と考えており、データ自体が足りていないことに気が付かなかった。

 

■解決方法

1.準備しているデータがあるか、関数countで件数を求める。