タグ

java8に関するtpircsのブックマーク (3)

  • Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note

    テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J

    Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note
  • Java8 Lambdaの文法拡張まとめ - きしだのHatena

    デフォルトメソッドは前に解説しました。 Java8で最もインパクトのある構文拡張、デフォルトメソッド ここでは、それ以外の構文拡張についてまとめておきます。 ラムダ式 実装すべきメソッドがひとつだけのインタフェースを関数型インタフェースといいます。 UnaryOperatorインタフェースは実装すべきメソッドがapplyメソッドひとつだけなので、関数型インタフェースになります。 たとえば、UnaryOperatorインタフェースを実装したクラスを定義すると次のようになります。 class MyOp implements UnaryOperator<String>{ @Override public String apply(String t) { return "** " + t + " **"; } } このUnaryOperatorインタフェースを使う、List#replaceAllを

    Java8 Lambdaの文法拡張まとめ - きしだのHatena
  • Java 8を関数型っぽく使うためのおまじない - きしだのHatena

    やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ

    Java 8を関数型っぽく使うためのおまじない - きしだのHatena
  • 1