CodeBlanks Logo Icon CodeBlanks

Predicate<T>

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

Main.java
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

Main.java
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

Soru
Predicate<String> longWord = s -> s.length() > 5;
boolean yes = longWord.____("defter");
Cevap
Predicate<String> longWord = s -> s.length() > 5;
boolean yes = longWord.test("defter");

Açıklama: test, Predicate'in çağrı yöntemidir.

İleri seviye bölümündeki tüm dersler