3章文字列、コンパレータ、フィルタ

すべてをできるかぎり単純にしなさい。しかし、単純すぎてはいけない。

――Albert Einstein

関数型プログラミングの使用を促進するメソッドを得て、JDKは進化しました。Stringのようなよく知っているクラスやインタフェースを使用する場合には、これまで使っていた古いメソッドの代わりに新しいメソッドを使用できるかを確認しておく必要があります。また、1つしかメソッドを持たない匿名内部クラスを使っていたような場所では、ラムダ式を使うことで無用な儀式や混乱を削減できます。

本章では、ラムダ式とメソッド参照を使用してStringをイテレートし、Comparatorを実装し、ディレクトリのファイルリストを取得し、そしてファイルやディレクトリを監視します。2章で紹介したメソッドの多くが本章に再び登場して様々なタスクを行います。本章で紹介するテクニックは、平凡でつまらないタスクを簡単に記述し保守できる簡潔なコードスニペットへと変身させます。

3.1 文字列のイテレーション

chars()メソッドは、StringクラスがCharSequenceインタフェースから継承した新しいメソッドです。この便利な内部イテレータは文字列を構成する各文字に対して処理を行います。これをまず文字列処理に使ってみましょう。その後、メソッド参照の利用例をいくつか紹介します。

例3-1 compare/fpij/IterateString.java

final String str = "w00t";

str.chars()
   .forEach(ch -> System.out.println(ch));

chars()メソッドはイテレート可能なStreamを返すので、 ...

Get Javaによる関数型プログラミング ―Java 8ラムダ式とStream now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.