Java Academy · Oppitunti

Predicate ja koostaminen

Koosta totuusarvotestejä.

Oppitunti 3/413 vaihetta

Predicate ja koostaminen on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Predicate-toiminta

Predicate<T> vastaanottaa arvon ja palauttaa boolean-arvon.

  • Sen metodi on boolean test(T t).
  • Se mallintaa kyllä/ei-ehdon.
import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> isEven = n -> n % 2 == 0;
        System.out.println(isEven.test(4));
        System.out.println(isEven.test(5));
    }
}

Predicate filterissä

Stream.filter vastaanottaa Predicate-predikaatin ja säilyttää vain ehdon täyttävät alkiot.

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> evens = nums.stream()
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());
        System.out.println(evens);
    }
}

Yhdistäminen and-metodilla

and muodostaa predikaatin, joka on tosi vain, kun molemmat predikaatit täyttyvät.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> positive = n -> n > 0;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> both = positive.and(even);
        System.out.println(both.test(4));
        System.out.println(both.test(-2));
    }
}

Yhdistäminen or-metodilla

or palauttaa toden, kun vähintään yksi predikaateista täyttyy.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> empty = String::isEmpty;
        Predicate<String> shortStr = s -> s.length() < 3;
        Predicate<String> either = empty.or(shortStr);
        System.out.println(either.test(""));
        System.out.println(either.test("hi"));
        System.out.println(either.test("hello"));
    }
}

Kieltäminen negate-metodilla

negate kääntää predikaatin tuloksen ja tuottaa loogisen NOT-operaation.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> odd = even.negate();
        System.out.println(odd.test(3));
    }
}

Predicate.not-staattinen apumetodi

Predicate.not(p) on selkeä staattinen tapa kieltää predikaatti, erityisesti metodi­viittausten yhteydessä.

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("", "a", "", "bc");
        List<String> nonEmpty = words.stream()
            .filter(Predicate.not(String::isEmpty))
            .collect(Collectors.toList());
        System.out.println(nonEmpty);
    }
}

Predicate.isEqual

Predicate.isEqual(target) muodostaa predikaatin, joka testaa yhtäsuuruutta kiinteään arvoon Objects.equals-metodin avulla.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> isJava = Predicate.isEqual("java");
        System.out.println(isJava.test("java"));
        System.out.println(isJava.test("python"));
    }
}

Useiden ehtojen ketjuttaminen

Voitte ketjuttaa and-, or- ja negate-metodeja ilmaistaksenne monipuolisia sääntöjä. Käyttäkää sulkeita ryhmittelyn hallintaan.

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> big = n -> n > 100;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> rule = big.and(even).or(n -> n == 0);
        System.out.println(rule.test(0));
        System.out.println(rule.test(102));
        System.out.println(rule.test(101));
    }
}

BiPredicate kahdelle syötteelle

BiPredicate<T, U> testaa kaksi argumenttia ja tukee myös and-, or- ja negate-metodeja.

import java.util.function.BiPredicate;

public class Main {
    public static void main(String[] args) {
        BiPredicate<String, Integer> hasLength = (s, n) -> s.length() == n;
        System.out.println(hasLength.test("hello", 5));
    }
}

Predikaatit anyMatch-operaatiossa

Virran pääteoperaatiot, kuten anyMatch, allMatch ja noneMatch, vastaanottavat kaikki Predicate-predikaatin.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 3, 5, 8);
        System.out.println(nums.stream().anyMatch(n -> n % 2 == 0));
        System.out.println(nums.stream().allMatch(n -> n > 0));
    }
}

Uudelleenkäytettävät Predicate-vakiot

Predikaattien määrittäminen nimetyiksi muuttujiksi tekee suodatusputkista itseään dokumentoivia ja uudelleenkäytettäviä.

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Predicate<String> nonBlank = s -> !s.isBlank();
        List<String> input = List.of("a", " ", "", "b");
        System.out.println(input.stream().filter(nonBlank).collect(Collectors.toList()));
    }
}

Pikatarkistus

Mitä p.and(q) tuottaa?

Kertaus

Yhdistitte totuusarvoisia testejä:

  • Predicate<T> palauttaa totuusarvon test-metodilla.
  • and, or ja negate yhdistävät ehtoja oikosulkuarviointia käyttäen.
  • Predicate.not ja Predicate.isEqual ovat hyödyllisiä staattisia apumetodeja.
  • BiPredicate testaa kaksi syötettä.
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Predicate ja koostaminen” ilmainen?

Kyllä – oppitunnin ”Predicate ja koostaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Predicate ja koostaminen”?

Koosta totuusarvotestejä. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Predicate ja koostaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Function ja BiFunction
  2. Supplier ja Consumer
  3. Predicate ja koostaminen
  4. Mukautetut funktionaaliset rajapinnat
← Takaisin: Java Academy