Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

12.8. Predicate + Stream

		
package cn.netkiller.test;

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

class Rule {
    Predicate<Integer> condition;
    Runnable action;

    Rule(Predicate<Integer> condition, Runnable action) {
        this.condition = condition;
        this.action = action;
    }
}

public class Test {
    static void main(String[] args) {

        int value = 15;
        List<Rule> rules = Arrays.asList(
	        new Rule(v -> v < 10, () -> System.out.println("小于 10")), 
	        new Rule(v -> v >= 10 && v < 20, () -> System.out.println("10 到 20")), 
	        new Rule(v -> v >= 20, () -> System.out.println("大于等于 20"))
        );
        rules.stream()
        	.filter(rule -> rule.condition.test(value))
        	.findFirst()
        	.ifPresent(rule -> rule.action.run());

    }

}