はじめての Lambda vol.4
はじめての Lambda シリーズも4回目となりました。
今回は Method Reference を使ってみることにします。
Method Reference って名前のとおりメソッド参照です。
メソッドに対する参照だけです。
よって、はじめての Lambda vol.2 でのサンプルコードの最大値を求める部分を
Method Reference に置き換えることができます。
下記コードのように非常に簡潔になります。(^_^)v
jp\yucchi\hello_lambda_2\Hello_Lambda_2.java |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package jp.yucchi.hello_lambda_2; import java.util.ArrayList; import java.util.List; public class Hello_Lambda_2 { public static void main(String[] args) { List<Lady> ladies = new ArrayList<>(); ladies.add(new Lady(80, 20)); ladies.add(new Lady(70, 14)); ladies.add(new Lady(85, 30)); ladies.add(new Lady(90, 24)); ladies.add(new Lady(100, 10)); int maxBust = ladies.filter(l -> l.age > 15 && l.age < 26) .map(l -> l.bustSize) //.reduce(0, (left, right) -> Math.max(left, right)); // Method Reference を使うように変更 .reduce(0, Math::max); System.out.println("16歳以上、26歳未満で一番大きな胸のサイズは" + maxBust + "です。"); } private static class Lady { int bustSize; int age; public Lady(int bustSize, int age) { this.bustSize = bustSize; this.age = age; } } } |
Math::max の部分が Method Reference を利用したコードです。
こんなにすっきりしたコードで本当にちゃんと動くのか?
試してみました。
おおっ! ちゃんと動いてるじゃないか!
一時期、Method Reference に :: と # どちらを使うかで熱い議論がなされていた。(今も?)
Java™ Platform, Standard Edition 8 Developer Preview with Lambda Support b 39 では
:: (ダブルコロン)が採用されているようです。
Java 8 で Lambda が実装されたら馴染みのない素敵なコードを見ることができるような気がします。
TAGS: Java | 2012年6月6日9:16 AM | Comment : 0