はじめての Lambda vol.2

Java

今朝から作ったプログラムを Lambda を使うように変更しようといろいろ調べてた。

そしたら以前 Fork/Join フレームワークについて調べていたときに発見したコードを目にした。

確か IBM のサイトにあった記事だがどうやらちょくちょくサンプルにあがってくるコードらしい。

日本語で Lambda の解説をしてくれているサイトにもあった。

ある年の学生のハイスコアを見つけ出すプログラムだ。

それを参考にしてこんなプログラムを組んでみた。

一番大きなバストを調べるプログラムだ。

ただし年齢制限を設けた。

16歳以上、26歳未満だ。

Java 7 でのコードは次のようになります。

jp\yucchi\hello_lambda_2\Hello_Lambda_2.java

実行結果は

run:
16歳以上、26歳未満で一番大きな胸のサイズは90です。
構築成功 (合計時間: 0 秒)

期待通りの結果となります。

次にこれを Lambda を使ってみます。

 

jp\yucchi\hello_lambda_2\Hello_Lambda_2.java

なんか見慣れないものがちらほらありますね。

実行結果は

Hello_Lambda_2

Good! (^^)

この部分が JDK 8 の新兵器 Lambda ですね。

見慣れないメソッドの正体は

filter メソッド : コレクションの要素のフィルタリングをする優れものです。

引数の Predicate オブジェクトの eval メソッドの戻り値が true の要素だけをフィルタリングします。

 

map メソッド : 新しいコレクションを作り直すメソッドです。

Mapper オブジェクトの map メソッドの戻り値を新たな要素としたコレクションを作ります。

 

reduce メソッド : 要素を減らして、最終的に一つにするためのメソッドです。

以上のように Lambda を使うポイントを少しだけ知ったつもりになった。(^0^;)

もっと詳しく知りたい方は参考にさせていただいたというよりは、まるっといただいたサイトを紹介します。

Project Lambda

こちらのサイトが勉強になります。

ただし、上記のプログラムでパラレル処理をする方法も載っていましたが

なんと エラー になってしまいます。

Lambda はまだ開発途中なので紹介したサイトの情報もいつまで有効なのかは解りません。

日本語の情報はまだまだ少ないようなので、英語が得意な方は英語サイトをググって情報収集したほうがいいかもです。

Hatena タグ:

はじめての Lambda

Java

Lambda のお試し版を使ってみた。

残念ながら NetBeans 7.2 開発版ではまだサポートされてないようです。

それでメモ帳でというのもちょっとあれなので・・・

昔、昔、お世話になった CPad for Java2 SDK というシンプルなエディタを使ってみた。

コンパイルと実行さえできればいいやってのりで。

と言いつつも NetBeans でコーディングして CPad for Java2 SDK にコピペですが( ̄。 ̄;)

まず日本語で Lambda について解説しているサイトを片っ端からググってみた。

あまりにも少なかった・・・

もう、あちこちにあって並行処理に使う方法などもあるかなって思っていたが

まだ開発途中ってことで仕様変更がされる可能性が高いからかな。

よってまだ Lambda の情報源は数少ないようです。

とりあえず新しいもの好きの私は基本中の基本 Hello World をくんでみた。

jp\yucchi\hello_lambda\Hello_Lambda.java

Hello Lambda

 

うっ! しまった(><)

HelloWorld になってる。スペースを入れ忘れてしまった。

とりあえず Lambda のありがたみが良く解らないはじめての Lambda でした。

Lambda の解説はよく解らないのと良く解らないのに触ってみたいという

好奇心のかたまりだけで始めたので他の親切なサイトで勉強してください。

ちなみに Lambda 式

HelloFunc hf = () -> {
            System.out.println(“HelloWorld”);
        };

上記の書き方以外にも

HelloFunc hf = () -> System.out.println(“HelloWorld”);

とか

HelloFunc hf = () –> (System.out.println(“HelloWorld”));

でも OK らしい情報があったのですが私の環境ではコンパイルエラーになりました。

情報があっても古くなっていて使えない場合もあるから難しいですね。

Hatena タグ:

       


Comparator 使って思ったこと

Java

Comparator を使ったプログラムをつくった。

そして、思った。

いつもながら・・・ だな。( ̄。 ̄;)

jp\yucchi\lambda_charenge_1\Bust.java

jp\yucchi\lambda_charenge_1\Lambda_charenge_1.java

実行結果は次のようになります。

run:
70: 貧乳
80: 普通乳
90: 巨乳
100: 爆乳
構築成功 (合計時間: 0 秒)

ここで、さらに思った。

Java 8 で採用される Lambda を使えば Comparator の部分がすっきりするんだろうか?

さらに思った。

ところで、Lambda って何?

よくよく考えたら Lambda の前にやろうとしていたクロージャとかいうものもさっぱり知らない。

そろそろ Lambda について調べ始めなければ JDK 8 がリリースされたとしても時代の波に乗れない。

ここで、さらに思った。

Lambda も無かったことにならないかなぁ・・・(後ろ向き・・・

で、このプログラムを Lambda を使ってすっきりさせることができるのか?

私には絶対無理(>_<)

いったい、何をどうすればいいのか解らない。

当然といえば当然だ。

Lambda を知らないからね。

ただ、本当にこのプログラムを Lambda を使えばすっきりしたコードに変更可能なのかが知りたい。

誰か教えてけろ。(いつもながら努力は嫌い (^_^;)

Hatena タグ: