タグ

Java8に関するnantanのブックマーク (9)

  • Java 8 "Optional" ~ これからのnullとの付き合い方 ~ - Qiita

    Java8で新たに追加されたクラスにjava.util.Optionalがあります。 Optionalを使用することで、プログラムの堅牢性を高めたり、煩雑な記述を減らすことが期待されます。 Optionalとは? Optionalは値をラップし、 その値がnullかもしれない ことを表現するクラスです。 使い方 メソッドgetHoge()はnullを返す場合があるとします。 これまでなら次のような感じでnullチェックをしていたと思います。 String hoge = getHoge(); // hogeはnullかも if (hoge != null) { // nullチェック System.out.println(hoge.length()); // hogeがnullじゃないのでlengthメソッドを呼ぶ } nullかもしれない変数hogeのメソッドを呼ぶ場合、事前にnullチェ

    Java 8 "Optional" ~ これからのnullとの付き合い方 ~ - Qiita
  • Collectorを征す者はStream APIを征す(部分的に)

    cero_tさんが書かれたラムダ禁止について気出して考えてみた - 9つのパターンで見るStream API は、とても良い記事です。Stream APIで実際に書いてしまいそうな、従来のfor/if文より読みにくいコード、予期せぬ不具合を起こしうるコードを例示し、いくつかの教訓を導き出しています。 何より、社内で「ラムダ式禁止、Stream API禁止」という悲しいことにならないように手を打とう! ラムダ式やStream APIの使い方やうれしさ、そして危ういところを社内の勉強会などで広げていこう! という、前向きな主張がすばらしいです。私も見習っていこうと思います。 さて記事では、cero_tさんが挙げられている8の教訓のうち、次の2点(カッコ内は私の補足です)について、少し異論を述べたいと思います。 (4) collectをしたら一度ローカル変数に入れよう!(collectで作ら

  • Java8のStreamを使いこなす - きしだのHatena

    さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基 まずは、Iterableインタフェースに用意されたforEachメソッドを見てみましょう。 List<String> names = Arrays.asList("hoge hoge", "foo bar", "naoki", "kishida"); names.forEach(s -> System.out.println(s)); これで次のように表示されます。 hoge hoge foo bar naoki kishida いままでの拡張forだと次のように書いてました List<String> names = Arrays.a

    Java8のStreamを使いこなす - きしだのHatena
  • Streamのcollectメソッドを学ぶ — 裏紙

    collect メソッドの概要 端的に述べると collectメソッド は Stream<T> を R に変換する操作です。 より詳しく述べると、 Stream の各要素( T )を中間コンテナ( A )に折り畳んだ後に最終的な結果( R )に変換する操作です。 括弧内のアルファベットは Collector が持つ3つの型変数に対応しています。 T : Streamの要素の型 A : ミュータブル な中間コンテナの型 R : 最終的に返される結果の型 例えば Stream<Character> を単純に繋げて String にする場合は、 Stream の各 Character ( T )を StringBuilder ( A )に append した後に String ( R )に変換する、 という流れになります。 Collector インターフェースの説明 collectメソッド は引

  • ラムダ式とストリームAPIでJavaプログラミングはここまでシンプルになる!--Java SE 8に今すぐ移行すべき理由 - page2 - builder by ZDNet Japan

    Java SE 8ではメソッドの引数に「処理」を渡せる。匿名内部クラスの実装を大幅に簡易化 ここまで読み進めてきた方の中には、「Java SE 8で並列処理を簡単に実装できることはわかったけど、新しい機能の学習で苦労するのは嫌だな」と思った方がいらっしゃるかもしれません。 もちろん、これまでのJava SEからJava SE 8に移行するためには、ラムダ式など新しい言語仕様について学ぶ必要があります。しかし、上の例からも、その苦労以上のメリットがありそうだということはわかりますよね。皆さん、安心して、早くJava SE 8の新しいルールを学んでください。 それでは、Java SE 8によるプログラミングは、これまでとどう変わるのでしょうか。それについて簡単にご説明しましょう。 これまでのJavaプログラミングでは、まずクラスを書き、その中にメソッドを定義するというスタイルが一般的でした。メ

  • Stream APIで大きなファイルを読み込むと - torutkのブログ

    Java SE 7で導入されたNIO2のFilesクラスでreadAllLinesメソッドを使って大きなファイルを読むと、ヒープメモリを圧迫またはOutOfMemoryErrorを起こします。 List<String> lines = Files.readAllLines(Paths.get(args[0]), StandardCharsets.UTF_8); Windows 7 64bit(12GBメモリ)で、Java SE 8 64bit版上でヒープメモリサイズのオプションを指定せずに(デフォルト)実行し、8GBのファイルを上述コードで読み込ませたところOutOfMemoryErrorが発生しました。 Java SE 8で導入されたStream APIを使って大きなファイルを読み込むとどうか試してみました。 try (BufferedReader reader = Files.newB

    Stream APIで大きなファイルを読み込むと - torutkのブログ
  • Java8のラムダって高階関数じゃないの?って話 | システムアーキテクトのごった煮

    先日、関Javaに行った時、 「Javaのラムダは高階関数じゃないよ~」って教えて頂きました。 う~ん、確かにJavaは関数をファーストクラスオブジェクトとしてサポートしている訳ではないので、高階関数の定義から外れてしまうんだろうな~。。 ただ、クロージャはレキシカルスコープを伴うファーストクラスなので、完全にJavaは未サポートなんだけど、高階関数は ・引数として関数を取れる ・返り値として関数を返せる なので、Java8のラムダサポートでそれっぽく書けるんじゃないかな~って思ってました。 っで、少し興味がわいたので、Java8で高階関数チックに書いてみました。 まずは、僕が大好きなカリー化。ちなみに、カレーは関係ありません。 カリー化ってハスケル・カリーさんに因んで名付けられたんですね、ややこしい。 カリー化 public class CurryTest { static interf

    Java8のラムダって高階関数じゃないの?って話 | システムアーキテクトのごった煮
  • Java SE 8に導入されるのは、ほんとにクロージャ!? - Fight the Future

    Javaプログラマが悩むラムダとクロージャと匿名関数と - Fight the Future じゅくのblog http://d.hatena.ne.jp/jyukutyo/20111117/1321587651 の続き。 セットアップ ラムダ式の使えるJava SE 8のアーリービルドは、ここからダウンロードできます。 Java Platform, Standard Edition 8 Developer Preview ReleasesJava.net http://jdk8.java.net/lambda/ PATHを通せばセットアップ完了。 Java SE 8とか言いながら、ラムダ式が使える版は、 OpenJDK 7の最新版にラムダプロジェクトを足したものだそうです。 (ラムダ式が使えない版は、ちゃんとJDK8) The Lambda project has used sou

    Java SE 8に導入されるのは、ほんとにクロージャ!? - Fight the Future
  • はてなブログ | 無料ブログを作成しよう

    わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……

    はてなブログ | 無料ブログを作成しよう
  • 1