Javaの資格の問題で、理解できない部分があったので質問します。
まず次のコードをお読みください。
public class Sample { String str; int num; public Sample(String str , int num) { this.str = str; this.num = num; } public String getStr() { return str; } public int getNum() { return num; } }
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { //★ public static void test(List<Sample> list,Predicate<Sample> p) { for (Sample s : list) { if (p.test(s)) { System.out.println(s.str); } } } public static void main(String[] args) { List<Sample> list = Arrays.asList(new Sample("A" , 30), new Sample("B" , 20), new Sample("C" , 10)); //★ test(list, s -> s.getNum() > 20); } }
分からない部分はコメントで★の部分です。
初心者なりに考えたこと(わかる方からすれば理解できない部分が多いかと思いますが。)
public static void test(List<Sample> list,Predicate<Sample> p) {
このコードでtestメソッドは「,」で区切られている、 List型?Sample型?のlist と Predicate型?Sample型?のp の引数は2つだと私は考え、(ツッコミたい気持ちはお察ししますが続けてお読みくださいm(_ _"m))
test(list, s -> s.getNum() > 20);
このコードでlistとsで引数は2つだと思ったのですが、ラムダ式の()省略は引数が1つの時のみとあったので自分の解釈が間違っていることに気づきました。
自分でも調べたのですが分からず、困っています。
教えていただきたいこと
この二つのコードは何を表しているのかを初心者にもわかるように教えていただけると嬉しいです。
説明が至らない点がありましたら補足依頼でコメントをお願いします。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/05 14:47