Stream流知多少

自作孽说熟悉java 8中的Stream,好咯,回答的一头雾水,还是查完资料后整理输出一遍吧。

1、是什么

Stream 使用一种类似与SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。这种风格类似于将要处理的元素结合看做一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选、排序、集合等等。

2、有什么优点

  • 无存储。它只是某中数据源的一种视图,数据源可以是一个数组
  • 可消费性。Stream只能被消费一次,一旦遍历过就会失效,想要再次遍历就必须重新生成
  • 为函数式编程而生。对Stream的任何修改都不会修改背后的数据源

3、怎么用

对于流的处理,主要有三个关键的操作:

  • 流的创建
  • 中间操作
  • 最终操作

 3.1 流的创建:

  • 通过已有的list创建一个流
  • 通过Stream来创建流  stream.of(....)

3.2 中间操作

  • filter:过滤
  • limit:取元素(前几个)
  • skip:丢弃元素(前几个)
  • distinct:去重
  • map:转换流中的数据类型
  • sorted:排序

3.3 最终方法

  • foreach:遍历
  • count:统计
  • toArray:手机流中的数据放到数组中
  • collect:手机流中的数据,房到集合中

4、练习

数据过滤:集合1~10,过滤奇数,只留留下偶数,将结果保存

    List<Integer>  list  = new  ArrayList<>();
    Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);
    List<Integet>  conllect  = list.stream.filter(item -> item%2 == 0).collector.toList());

字符串过滤并收集:arraylist集合,添加"zhangsan,23", "lisi, 4", "wangwu, 25" 保留年龄大于24岁的人,并将结果收集到Map集合中,其中姓名为键,年龄为值

        List<String> list = new ArrayList<>();
        Collections.addAll(list, "zhangsan,23", "lisi,24", "wangwu,25");
        Map<String, String> map = list.stream()
                .filter(item -> Integer.parseInt(item.split(",")[1]) >= 24)
                .collect(Collectors.toMap(item -> item.split(",")[0], item -> item.split(",")[1]));
        System.out.println(map);

  

posted @ 2024-02-24 19:58  星桐  阅读(40)  评论(0)    收藏  举报