跳至主要內容

Predicate

chanchaw小于 1 分钟languagejava

概述

Predicate in general meaning is a statement about something that is either true or false. In programming, predicates represent single argument functions that return a boolean value

案例

用于比较

package com.zetcode;

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

class BiggerThanFive<E> implements Predicate<Integer> {
    @Override
    public boolean test(Integer v) {
        Integer five = 5;
        return v > five;
    }
}

public class JavaPredicateEx {
    public static void main(String[] args) {
    List<Integer> nums = List.of(2, 3, 1, 5, 6, 7, 8, 9, 12);
    BiggerThanFive<Integer> btf = new BiggerThanFive<>();
    nums.stream().filter(btf).forEach(System.out::println);
    }
}

lambda - filter

上面的案例可以使用 lambda 简化写法

package com.zetcode;

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

public class JavaPredicateEx2 {
    public static void main(String[] args) {
        List<Integer> nums = List.of(2, 3, 1, 5, 6, 7, 8, 9, 12);
        Predicate<Integer> btf = n -> n > 5;
        nums.stream().filter(btf).forEach(System.out::println);
    }
}

removeif

package com.zetcode;

import java.util.ArrayList;
import java.util.function.Predicate;

public class ListRemoveIf {

    public static void main(String[] args) {

        var words = new ArrayList<String>();
        words.add("sky");
        words.add("warm");
        words.add("winter");
        words.add("cloud");
        words.add("pen");
        words.add("den");
        words.add("tree");
        words.add("sun");
        words.add("silk");

        Predicate<String> hasThreeChars = word -> word.length() == 3;
        words.removeIf(hasThreeChars);

        System.out.println(words);
    }
}