Predicate<T>
- Java kursu
- İleri seviye
- Ders 14/82
- 5 dk
Predicate<T> ile koşul fonksiyonunu öğrenirsin.
Predicate<T> arayüzü
Predicate<T>, bir T değerini alıp boolean döndüren bir koşul işlevidir. Tek soyut yöntemi test'tir. Akışlarda filter'a argüman olarak sıkça kullanılır.
Örnek: Predicate<String> longWord = s -> s.length() > 5;. Sonra longWord.test("defter") çağrısı true döner. Sınıflar yerine koşulları değişken gibi taşımak istediğinde Predicate idealdir.
Predicate'leri birleştirme
Predicate'ler mantıksal işleçlerle birleştirilebilir. and, or ve negate yöntemleri yeni Predicate'ler üretir; böylece koşulları bileşik hale getirebilirsin.
Örnek: longWord.and(startsWithA).or(isEmpty). Bu, "uzun ve A ile başlayan veya boş" anlamına gelir. Karmaşık iş koşullarını tek satırda ifade etmek için kullanışlıdır. Akışlarda da aynı şekilde kullanılabilir: stream.filter(longWord.and(startsWithA)).
Uygulama Predicate ile filtrele
Bir Predicate<String> tanımla; uzunluğu 5'ten büyük olan sözcükleri seçsin. List.of("kalem", "defter", "silgi") listesini akışa al, filter ile süz ve count ile adedini System.out.println ile yazdır.
Başlangıç kodu
import java.util.List;
import java.util.function.Predicate;
// Predicate tanımla (uzunluk > 5)
// filter ile süz ve count ile say
// Adedi yazdırÖrnek çözüm
import java.util.List;
import java.util.function.Predicate;
public class PredicateExample {
public static void main(String[] args) {
Predicate<String> longWord = s -> s.length() > 5;
long count = List.of("kalem", "defter", "silgi").stream()
.filter(longWord)
.count();
System.out.println(count);
}
}Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Predicate yöntemlerini eşleştir
| Kavram | Anlamı |
|---|---|
Predicate<T> |
T alır boolean döndürür |
test |
Çağrı yöntemi |
and |
Ve |
or |
Veya |
negate |
Değil |
2 Predicate<T> arayüzünün çağrı yöntemi hangisidir?
- apply
- test Doğru cevap
- accept
- get
Açıklama: test, Predicate'in çağrı yöntemidir.
3 Predicate çağrısını tamamla
Predicate<String> longWord = s -> s.length() > 5;
boolean yes = longWord.____("defter");
Predicate<String> longWord = s -> s.length() > 5;
boolean yes = longWord.test("defter");
Açıklama: test, Predicate'in çağrı yöntemidir.