へもろぐ

へもへも備忘録

【復習】Java女子部でやった、ラムダ式ハンズオン(3):配列とラムダ式

【東京】◆Java SE 8勉強会◆女子部もラムダ式に挑戦! - Java女子部 | Doorkeeper

 ↑これの、復習…その3。

その2のほうに「配列全体を何かする処理」と書いた部分、もう少し具体的にしていきます。

配列全体を何かする処理

Java SE 8でラムダ式が入ったときに、「やばい、文法かなり変わったらしい」と焦ったヒトもあるらしいのですが…全体の書き方が変わったワケではないです。『for文禁止』が、ひとり歩きしすぎちゃって誤解されちゃった感じ?

思い出して欲しい(または、知って欲しい)ことで、Java5になったときに、for文以外に、配列の先頭から末尾に向かって処理をするための拡張for文が入りました!そのときに、ある一定のパターンのfor文やwhile文は『便利な書き方』『わかりやすい書き方』になりました。

今回のラムダ式適用ポイントの1つ目が、↑に書いたような、『配列については、ある一定のパターンの記述がラクになります』…というところです。

では、その例…

配列要素を先頭から処理することについての進化

 Java5の文法で覚えているヒトが多いと思うのですが、その前のものも(BeforJava5)書いてみました。

一番上がJavaSE1.4とかの古い時代からある書き方。真ん中は、Java5から始まった書き方。最後が、今回のJava8。Java8でfor文で書かなくなったから、for文禁止…と。

拡張for文で書かなくなった代わりに、.stream()とか.forEach()とか出てきたよ、それがProject LambdaでCollections Frameworkに加わった変更で、Stream APIに関するところですよ♪ということ。

↓に、.stream()の説明

http://docs.oracle.com/javase/jp/8/api/java/util/Collection.html

↓に、.forEach()の説明

http://docs.oracle.com/javase/jp/8/api/java/util/stream/Stream.html

さらに、もっと減らして書けるよ?ってことで。

texts.forEach( (text)-> System.out.println(text) );

 とか

texts.forEach(System.out::println);

 こんな書き方もあるんです。

(この部分が、櫻庭さん資料3-1のところです。)

 書き方については、今回の勉強会に使ったNetBeansだったら、Java5の書き方に警告を出してくれて、クリックひとつでJava8の書き方になるので、慣れるまではIDEの機能を使うといいと思います。

 

初歩向けに書いたので、大掴みな説明になってしまいました…汗。もっときちんと詳しく説明してくださってるエントリを発見したので↓こちらも読んでください。


問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時 - ブログなんだよもん

 for文禁止の件は、↓のエントリが、ちゃんと理に適った話を説明していて、上司説得にはイイな♪って思いました。


2014-05-18 - torutkの日記

 

「配列全体を何かする処理」について簡単にまとめると、

配列を、グルグル繰り返しして中身を先頭から末尾まで全部処理していくところは、ラムダ式で書けるんじゃね?

…ということです。

 

…まだまだ続く…

 

開催から時間が経ったので、参加者さんが書いてくれてるエントリも増えたので、ご紹介♪


Java女子部 Java8+ラムダ式ハンズオン勉強会(ラムダ式、stream) その1 - のた犬のうまい猫めし

うん…よくまとまっていらっしゃる…見習いたい☆あと、絵がカワイイにゃっ!