Predicate ja koostaminen
Koosta totuusarvotestejä.
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 metodiviittausten 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 totuusarvontest-metodilla.and,orjanegateyhdistävät ehtoja oikosulkuarviointia käyttäen.Predicate.notjaPredicate.isEqualovat hyödyllisiä staattisia apumetodeja.BiPredicatetestaa kaksi syötettä.
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
- Function ja BiFunction
- Supplier ja Consumer
- Predicate ja koostaminen
- Mukautetut funktionaaliset rajapinnat