Bir integer listemiz olsun. Bir print fonksiyonu yapıyoruz ve bu fonksiyona bir liste veriyoruz. Listenin yanında bir de Predicate funcational interface'si veriyoruz. print method'u elemanları listelerken Predicate funcational interface'ni soracak, eğer true cevabı gelirse o eleman listelenecek.
package com.test.functionalinterface;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class ListTestForPredicate {
public void print(List<Integer> list, Predicate<Integer> predicate) {
for (Integer n : list) {
if (predicate.test(n)) {
System.out.println(n);
}
}
}
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
ListTestForPredicate test=new ListTestForPredicate();
test.print(list, n -> n%2 == 0 );
test.print(list, n -> n%2 == 1 );
}
}
print fonksiyonu görüldüğü gibi predicate parametresini almaktadır. if (predicate.test(n)) satırında predicate'e sormaktadır. Eğer boolean cevabı gelirse ekrana eleman basılmaktadır.
test.print(list, n -> n%2 == 0 ) ile (lambda kullanılıyor) önce çift elemanlar, test.print(list, n -> n%2 == 1 ) ile de sonra tek elemanlar bastırılmıştır. Çıktı aşağıdaki gibi olacaktır:
2
4
6
8
10
1
3
5
7
9