23行目: 23行目:
     monster.attack(sol);
     monster.attack(sol);
  }
  }
  // コレクション + [[Stream]] + ラムダ式
  // コレクション + [[Collection]] + ラムダ式
  monsters.stream().forEach(m -> m.attack(sol));
  monsters.parallelStream().forEach(m -> m.attack(sol));


  // 勇者インスタンスのHPを取り出す
  // 勇者インスタンスのHPを取り出す

2019年7月2日 (火) 17:00時点における版

< Java基本文法

import java.util.function.*;
public class Main {
    IntBinaryOperator func = (int a, int b) -> { return a - b; };
    int ans = func.applyAsInt(5, 3);
    System.out.println("5 - 3 = " + ans);
    }
}

省略記法

  • 左オペランドで変数の型が特定される場合、引数の型は省略できる
  • 引数が1つの場合はラムダ式の丸カッコも省略できる
IntToDoubleFunction func =    x -> { return x * x * 3.14; };
  • ラムダ式が単一の return文の場合、return文字と波括弧も省略できる
IntToDoubleFunction func = x -> x * x * 3.14;

利用例

// 拡張for
for (Monster monster : monsters) {
    monster.attack(sol);
}
// コレクション + Collection + ラムダ式
monsters.parallelStream().forEach(m -> m.attack(sol));
// 勇者インスタンスのHPを取り出す
(Hero h) -> { return h.getHp(); }
// 現在の日時を取り出す
() -> { return new java.util.date(); }
// long配列のコピーを作り、並べ替えたものを取り出す
(long[] arrays) -> {
    long[] newArrays = java.util.Arrays.copyOf(arrays, arrays.length);
    java.util.Arrays.sort(newArrays);
    return newArrays;
}