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() 方法还没懂什么意思
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值