Java——Stream流

发布于:2022-12-19 ⋅ 阅读:(216) ⋅ 点赞:(0)

一、什么是Stream流?

在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念。

目的:用于简化集合和数组操作的API。

在这里插入图片描述

Stream流思想:
Stream流式思想的核心

  1. 先得到集合或者数组的Stream流(就是一根传送带)
  2. 把元素放上去
  3. 然后就用这个Stream流简化的API来方便的操作元素。

在这里插入图片描述

案例:体验Stream流的作用

package stream;  
  
import java.util.ArrayList;  
import java.util.List;  
import java.util.function.Predicate;  
import java.util.stream.Collectors;  
import java.util.stream.Stream;  
  
/**  
 * 把集合中所有以"张"开头的元素存储到一个新的集合  
 * 把"张"开头的集合中的长度为3的元素存储到一个新的集合  
 * 遍历上一步得到的集合中的元素输出。  
 * */  
public class StreamTest {  
    public static void main(String[] args) {  
        List<String> list = new ArrayList<>();  
        list.add("张无忌");  
        list.add("周芷若");  
        list.add("赵敏");  
        list.add("张强");  
        list.add("张三丰");  
        Stream<String> stream = list.stream();  
//  
//        Stream<String> zhangStream =stream.filter(new Predicate<String>() {  
//            @Override  
//            public boolean test(String s) {  
//                if (s.startsWith("张")&&s.length()==3){  
//                    return true;  
//                }  
//                return false;  
//            }  
//        });  
        //=========================================================        // 简化 一行代码搞定    
        List<String> coll = list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).collect(Collectors.toList());  
        System.out.println(coll);  
        //==================================================================  
//        Stream<String> zhangStream = stream.filter(          s-> s.startsWith("张"));
//        List<String> collect = zhangStream.collect(Collectors.toList());  
//        System.out.println(collect);  
//    List<String> zhanglist = new ArrayList<String>();  
//        for (int i = 0; i < list.size(); i++) {  
//            String s = list.get(i);  
//            if (s.startsWith("张")){  
//                zhanglist.add(s);  
//            }  
//        }  
//        List<String> threelist = new ArrayList<String>();  
//        for (String s:list){  
//            if (s.length()==3){  
//                threelist.add(s);  
//            }  
//        }  
    }  
}

小结:
1、Stream流的作用是什么,结合了什么技术?
简化集合、数组操作的API。结合了Lambda表达式。

2、说说Stream流的思想和使用步骤。
先得到集合或者数组的Stream流(就是一根传送带)。
把元素放上去。
然后就用这个Stream流简化的API来方便的操作元素。

二、Stream流获取

Stream操作集合或者数组的第一步是先得到Stream流,然后才能使用流的功能。

在这里插入图片描述

在这里插入图片描述

三、Stream流常用方法(中间方法)

1、Stream流常用API(中间操作方法)
在这里插入图片描述

2、Stream流的常见终结操作方法(终结方法)
在这里插入图片描述

tips. 终结和非终结方法的含义是什么?

终结方法后流不可以继续使用,非终结方法会返回新的流,支持链式编程。

四、收集Stream流

1、Stream流的收集操作

  • 收集Stream流的含义:就是把Stream流操作后的结果数据转回到集合或者数组中去。

  • Stream流:方便操作集合/数组的手段

  • 集合/数组:才是开发中的目的

2、Stream流的收集方法
在这里插入图片描述

Collectors工具类提供了具体的收集方式
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到