【特集】

大刷新リリース Java 8の新機能

1 Java 8の目玉、ラムダ式(1) - ラムダ式の基本

 
  • <<
  • <

1/16

2014年3月18日(米国時間)、ラムダを筆頭に数多くの新機能が含まれるJava 8がいよいよリリースされる。

ここ数年、JavaはOracleのSun買収による混乱、当初Java 7で実装されるはずだった多くの機能の先送り、さらにはJava 8のリリースの遅延など様々な要因によって強い停滞感があり、それが関数型言語の機能を取り入れたScalaなどJavaの代替となるJVM言語の台頭にも繋がった。

そうしたJavaプログラマの溜まりに溜まったモヤモヤを払拭するアップデートとして期待されているのが今回のJava 8だ。前述の通りラムダの導入による新たな構文からStream APIやTime APIといったライブラリの追加まで、非常に多くの新機能を含んでいる。

本稿ではそのJava 8の主要な新機能についてサンプルコードを交えて紹介していく。Java 8の新機能を押さえるための参考になれば幸いだ。

Java 8の目玉、ラムダ式

Java 8で追加された機能のうち最もインパクトが大きいのはなんといってもラムダ式の導入だろう。ラムダ式を使用することでこれまで匿名クラスとして実装していたような処理を簡単に記述できるようになる。また、後述するコレクションAPIでもラムダ式を活用した新たなAPIが追加されているなど、ラムダはJava 8において非常に大きな役割を果たしている。

ラムダ式の基本

まずは簡単な例を見てみよう。たとえばこれまでComparatorを使用したコレクションのソート処理は以下のように記述する必要があった。

List<String> list = Arrays.asList("Java", "Scala", "Groovy");
list.sort(new Comparator<String>(){
  @Override
  public int compare(String s1, String s2){
    return s1.length() - s2.length();
  }
});

Java 8ではこの処理をラムダ式を使用して以下のように記述することができる。このような単純な例でも明らかに記述量が減っていることがわかるだろう。

List<String> list = Arrays.asList("Java", "Scala", "Groovy");
list.sort((String s1, String s2) -> s1.length() - s2.length());

ラムダ式の構文は以下の通りだ。式を1行で記述する場合はreturn文は必要ないが、{...}で複数行の処理を記述する場合はreturn文で戻り値を返す必要がある点に注意してほしい。

// 関数の処理を1行で記述する場合
(引数のリスト) -> 式

// 関数の処理を複数行で記述する場合
(引数のリスト) -> {
  関数の処理
  return 値;
}

また、ラムダ式の引数の型が自明な場合は引数の型を省略することができる。たとえば前述のソートのサンプルは以下のように記述することができる。

List<String> list = Arrays.asList("Java", "Scala", "Groovy");
list.sort((s1, s2) -> s1.length() - s2.length());

さらにラムダ式の引数が1つの場合は引数リストの括弧も省略可能だ。

list.forEach(s -> System.out.println(s));
  • <<
  • <

1/16

インデックス

目次
(1) Java 8の目玉、ラムダ式(1) - ラムダ式の基本
(2) Java 8の目玉、ラムダ式(2) - 関数型インタフェース
(3) Java 8の目玉、ラムダ式(3) - メソッド参照、実質的final
(4) インタフェースの改善
(5) 大幅に強化されたコレクションAPI(1) - 既存のコレクションクラスに追加されたメソッド
(6) 大幅に強化されたコレクションAPI(2) - 新コレクションクラスStream
(7) 大幅に強化されたコレクションAPI(3) - java.io/java.nioの改善
(8) 大幅に強化されたコレクションAPI(4) - 遅延評価、並列処理
(9) 新たな日付処理のためのAPI
(10) 存在するかどうかわからない値を表す型Optional
(11) java.util.concurrentの強化
(12) 符号なし整数のサポート
(13) タイプアノテーション
(14) その他の新機能(1) - 便利なユーティリティ、ジェネリクスの改善
(15) その他の新機能(2) - 新たなJavaScriptエンジン「Nashorn」、パーマネント領域の廃止
(16) IDEやフレームワークのJava 8サポート状況

もっと見る



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

angela、NEWアルバム『LOVE & CARNIVAL』より収録映像や新曲試聴動画を公開
[06:12 8/25] ホビー
[TOKIO・松岡]連ドラ「家政夫のミタゾノ」に主演 家庭壊す“家政夫”に
[05:00 8/25] エンタメ
松岡昌宏、新ドラマでダークな家政夫役! 家事ハウツーも毎回披露
[05:00 8/25] エンタメ
デスノート、安室奈美恵が主題歌と劇中歌担当!“信念への真っ直ぐな想い”歌う
[04:00 8/25] ホビー
[安室奈美恵]「デスノート」新作映画で主題歌&劇中歌 “死神”とコラボビジュアルも公開
[04:00 8/25] エンタメ

求人情報