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
Bir integer listemiz olsun. Bir applyAll fonksiyonu yapıyoruz ve bu fonksiyona bir liste veriyoruz. Listenin yanında bir de BinaryOperator funcational interface'si veriyoruz. applyAll method'u elemanları işlerken BinaryOperator funcational interface'ni çağırmaktadır. Her eleman ile son kalan değer işleme sokulmaktadır:
package com.test.functionalinterface;
import java.util.Arrays;
import java.util.List;
import java.util.function.BinaryOperator;
public class ListTestForBinaryOperator {
public Integer applyAll(List<Integer> list, BinaryOperator<Integer> binaryOperator) {
int result=list.get(0);
for (int i=1 ; i<list.size(); i++) {
result=binaryOperator.apply(list.get(i), result);
}
return result;
}
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
ListTestForBinaryOperator test=new ListTestForBinaryOperator();
int result1=test.applyAll(list, (t1,t2) -> t1+t2);
System.out.println("result1 : "+result1);
int result2=test.applyAll(list, (t1,t2) -> t1*t2);
System.out.println("result2 : "+result2);
}
}
applyAll fonksiyonu görüldüğü gibi binaryOperator parametresini almaktadır. Sürekli yeni elamanları result=binaryOperator.apply(list.get(i), result); şeklinde işleme sokmaktadır.
int result1=test.applyAll(list, (t1,t2) -> t1+t2); ile (lambda kullanılıyor) önce listenin tüm elemanlarını topluyoruz, int result2=test.applyAll(list, (t1,t2) -> t1*t2); ile de listenin tüm elemanlarını çarpımını buluyoruz. Çıktı aşağıdaki gibi olacaktır:
result1 : 55
result2 : 3628800