2017-10-23 4 views
-3

にラムダを変換します。は、私はガジェットのリストを持っている方法のrefrences

List<String> gadgets = new ArrayList<>(); 

gadgets.add("SmartPhone"); 
gadgets.add("SmartWatch"); 
gadgets.add("SmartTV"); 
gadgets.add("SmartDoor"); 
gadgets.add("iPhone"); 

以下のコードをメソッド参照に変換すると、今はラムダ式で構成されています。私は、これはあなたがメソッドにコードを移動する必要があるメソッド参照

String myItem = gadgets.stream() 
         .peek(s -> System.out.println("processing: " + s)) 
         .filter(s -> s.length() > 8) 
         .findFirst() 
         .orElse(""); 

System.out.println("result: " + myItem); 

答えて

4

に変換する方法を教えてください:

private void accept(String s) { 
    System.out.println("processing: " + s); 
} 

private boolean test(String s) { 
    return s.length() > 8; 
} 

そして:

String myItem = gadgets 
     .stream() 
     .peek(YourClass::accept) 
     .filter(YourClass::test) 
     .findFirst() 
     .orElse(""); 

このような場合には、私が固執することをお勧めしますラムダで。上記のようにコードを書式化するだけで、ラムダは読みやすくなります。

あなたがいないと、ここでできる
0

、あなたが"processing: " + s> 8のように、追加のロジックを持っているよう。削除する場合は、.peek(System.out::println)に変更することができます。

もう一つの方法は、同様に、別のメソッドにロジックをラップすることである。

public boolean isLengthMoreThan8(String s){ 
return s.length > 8 
} 

および使用方法参照:

.filter(this::isLengthMoreThan8)... 
関連する問題