【从入门到起飞】JavaSE—Stream流

专栏【JavaSE】
喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
音乐分享【如愿】
欢迎并且感谢大家指出我的问题

文章目录

  • Stream流的作用
  • Stream流的使用步骤
    • 获取Stream流
    • ⭐单列集合获取Stream流
    • ⭐双列集合获取Stream流
      • 方法一
      • 方法二
    • ⭐数组获取Stream流
    • ⭐一堆零散数据获取Stream流
  • Stream流的中间方法
    • ⭐过滤 filter
      • 链式编程
    • ⭐获取前几个元素 limit
    • ⭐跳过前几个元素 skip
    • ⭐元素去重 distinct
    • ⭐合并流 concat
  • Stream流的终结方法
    • ⭐遍历 forEach
    • ⭐统计 count
    • ⭐收集流中的数据,放到数组中 toArray
    • ⭐收集方法 collect
      • 收集到list集合中
      • 收集到Set集合中
      • 收集到Map集合中
  • 练习

【从入门到起飞】JavaSE—Stream流_第1张图片

Stream流的作用

结合了lambda表达式,起到了简化集合,数组的作用

Stream流的使用步骤

  1. 先得到一条Stream流,并把数据放上去
  2. 使用中间方法对流水线上的数据进行操作
  3. 使用终结方法对流水线上的数据进行操作

获取Stream流

【从入门到起飞】JavaSE—Stream流_第2张图片

⭐单列集合获取Stream流

⭐双列集合获取Stream流

由于双列集合不能直接获取Stream流,我们可以所有下面2种方法来解决

方法一

使用keySet()获得所有的

【从入门到起飞】JavaSE—Stream流_第3张图片

方法二

使用entrySet()获得所有的键值对对象

【从入门到起飞】JavaSE—Stream流_第4张图片

⭐数组获取Stream流

【从入门到起飞】JavaSE—Stream流_第5张图片

⭐一堆零散数据获取Stream流

【从入门到起飞】JavaSE—Stream流_第6张图片

Stream流的中间方法

【从入门到起飞】JavaSE—Stream流_第7张图片
中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
修改Stream流中的数据,不会影响原来集合或数组中的数据

⭐过滤 filter

【从入门到起飞】JavaSE—Stream流_第8张图片
可以多次过滤

【从入门到起飞】JavaSE—Stream流_第9张图片

链式编程

【从入门到起飞】JavaSE—Stream流_第10张图片
为了解决上图的问题,我们可以使用链式编程

【从入门到起飞】JavaSE—Stream流_第11张图片

⭐获取前几个元素 limit

【从入门到起飞】JavaSE—Stream流_第12张图片

⭐跳过前几个元素 skip

【从入门到起飞】JavaSE—Stream流_第13张图片

⭐元素去重 distinct

依赖的是hashCode和equals方法
【从入门到起飞】JavaSE—Stream流_第14张图片

⭐合并流 concat

【从入门到起飞】JavaSE—Stream流_第15张图片

Stream流的终结方法

⭐遍历 forEach

⭐统计 count

【从入门到起飞】JavaSE—Stream流_第16张图片

⭐收集流中的数据,放到数组中 toArray

【从入门到起飞】JavaSE—Stream流_第17张图片
然后按ctrl+alt+v自动生成左边
【从入门到起飞】JavaSE—Stream流_第18张图片
发现是object类型的
【从入门到起飞】JavaSE—Stream流_第19张图片

如果我们想把数据放到指定类型中,例如String类型,那么一个怎么写呢

⭐收集方法 collect

收集到list集合中

【从入门到起飞】JavaSE—Stream流_第20张图片

收集到Set集合中

【从入门到起飞】JavaSE—Stream流_第21张图片

收集到Map集合中

list.stream()
                .filter(s->"男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(键的规则,值的规则));

补全后是

 list.stream()
                .filter(s->"男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(new Function<String, Object>() {
                                              @Override
                                              public Object apply(String s) {
                                                  return null;
                                              }
                                          },
                        new Function<String, Object>() {
                            @Override
                            public Object apply(String s) {
                                return null;
                            }
                        }));

为什么new后面是Function
查看toMap的源码,发现里面就是Function
【从入门到起飞】JavaSE—Stream流_第22张图片

使用map进行收集时,键不能重复

练习

参考视频
基础练习题
综合练习题

你可能感兴趣的:(Java基础,java,服务器,linux)