ラムダ式(関数型インターフェース)が引数のメソッドの挙動がよくわかりません。
例えば、以下のコードをご覧ください(JavaSilver黒本の問題より抜粋)
このプログラムはリストに文字列["A", "B", "C"]が格納されており、
文字列Bを削除しリストの中身を出力するものとなっています。
Java:Sample1.java
1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.List; 4 5public class Sample1 { 6 public static void main(String[] args) { 7 List<String> list = new ArrayList<>(Arrays.asList(new String[] { "A", "B", "C" })); 8 list.removeIf((String s) -> { 9 return s.equals("B"); 10 }); 11 System.out.println(list);//出力結果:[A, C] 12 } 13} 14
引数がプリミティブ型や参照型のメソッドの挙動はわかるのですが、
ラムダ式が引数の場合いまいちわかりません。
例えば、removeif(Predicate<? super E> filter)
と似たようなメソッドにremove(int index)
がありますが、
今回のコードだとindexに1を代入したら、リストの2つ目の要素"B"が削除されるので、イメージしやすいです。
ですがremoveif(Predicate<? super E> filter)
の引数はラムダ式なので、
どういう挙動なのか理解できません。
すみません、うまく言語化できずかなり稚拙な文章ですが、お教えいただけると嬉しいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。