Stream流的引入

1.Lambda表达式:

        基于Lambda所带来的函数式编程,有引入了一个全新的Stream概念,用于解决集合类库既有的弊端


2.需求:有一个List集合

      1.将list集合中姓张的元素过滤到一个新的集合中
      2.然后将过滤出来的姓张的元素,在过滤处长度为3的元素,存储到一个新的集合中                                                  

public static void main(String[] args) {
    // 已知的知识来解决需求
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("张三四");
    list.add("王五");
    list.add("赵六");
    list.add("张三三");
    list.add("周八");
    // 1.将list集合中姓张的元素过滤到一个新的集合中
    ArrayList<String> list1 = new ArrayList<>();
    for (String name : list) {
        // 判断元素是 张 开头的元素,如果是, 就存储到新的集合中
        if(name.startsWith("张")){
            list1.add(name);
        }
    }
    System.out.println(list1);
    // 2.然后将过滤出来的姓张的元素,在过滤处长度为3的元素,存储到一个新的集合中
    ArrayList<String> list2 = new ArrayList<>();
    for (String name : list1) {
        // 判断每个元素的长度是否为3,如果是,就存储到新的集合中
        if (name.length() == 3){
            list2.add(name);
        }
    }
    System.out.println(list2);
    //Stream流操作集合,获取流,过滤操作,打印输出
    list.stream().filter((name)->{
        return name.startsWith("张");
    }).filter((name)->{
        return name.length() == 3;
    }).forEach((name)->{
        System.out.println(name);
    });

3.Stream流操作集合,获取流,过滤操作,打印输出

Stream<T> filter(Predicate<? super T> predicate);
        ----->   参数:public interface Predicate<T> (函数式接口)
                ----抽象方法:boolean test(T t);
        ---->    参数:public interface Consumer<T> (函数式接口)
                ----抽象方法:void accept(T t);
void forEach(Consumer<? super T> action);
        ----->   参数:public interface Consumer<T> (函数式接口)
                ----抽象方法:void accept(T t);

list.stream().filter((name)->{
    return name.startsWith("张");
}).filter((name)->{
    return name.length() == 3;
}).forEach((name)->{
});

直接阅读代码的字面意思就可以完美的展示无关逻辑方式的语义:获取流--> 过滤姓张-->过滤长度为3 --> 逐一打印

list.stream().filter((name)->name.startsWith("张")).filter((name)->name.length() == 3).forEach((name)->System.out.println("Stream:"+name) );

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值