java8 filter方法、Predicate接口的使用

filter方法在stream中起到过滤的作用,可以链式操作,不是terminal操作。
Predicate是一个接口,接口方法是test(),返回boolean值.
Predicate常和stream的filter配合使用,实现过滤。
可以多条件组合过滤,如代码:

public static void main(String[] args) {
    List<String> names = Arrays.asList("张三丰", "张翠山", "张无忌","金毛狮王","赵敏");

    // 张开头的
    Predicate<String> zhang=(n)->n.startsWith("张"); //
    // 含三丰的
    Predicate<String> sanfeng=(n)->n.contains("三丰");
    // 王结尾的
    Predicate<String> wang=(n)->n.endsWith("王");
    sanfeng.equals("金毛");

    //Predicate常和stream的filter配合使用,实现过滤
    //和filter结合用 默认调用的是test()方法 姓张的
    names.stream().filter(zhang).forEach(n-> System.out.println(n));

    //and()  姓张的,含三丰的
    names.stream().filter(zhang.and(sanfeng)).forEach(n-> System.out.println(n));

    //or()  张开头的,或者 王结尾的
    names.stream().filter(zhang.or(wang)).forEach(n-> System.out.println(n));

    //negate() 不是张开头的,但是王结尾的
    names.stream().filter(zhang.negate().and(wang)).forEach(n-> System.out.println(n));

    // equals() 方法还没懂什么意思
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值