Predicate
小于 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);
}
}
