java Stream学习笔记

1、Stream与io无关。

2、Stream和用普通的循环没有太大区别,甚至时间复杂度更高,代码可读性差(通常代码行数更少)。

3、流操作就是把循环要做的任务单独抽取出来,最终通过编译在一起。

来看一下实现一个例子:

import java.util.List;
import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周芷若");
        list.add("赵敏");
        list.add("张强");
        list.add("张三丰");

        //普通写法
        List<String> zhangList = new ArrayList<>();
        for (String name : list) {
            if (name.startsWith("张") && name.length() == 3) {
                System.out.println(name);
            }
        }
        
        //流式写法
        list.stream()
                .filter(s -> s.startsWith("张"))
                .filter(s -> s.length() == 3)
                .forEach(s ->System.out.println(s));
    }
}

实际上代码并没有简洁多少,反而可读性变差。当然简洁的代码要么被编译器编程成时间复杂度更低的代码,要么就是牺牲时间复杂度。

 

Java流操作还有其他的一些操作,常见的有:

map操作、for each操作、limit操作。。。。

总结起来就是

1、集合对象/数组对象 .stream() . 操作(集合元素/数组元素 -> 条件 )

2、集合对象/数组对象 .stream() . 操作(集合元素/数组元素 -> 新的引用)

3、集合对象/数组对象 .stream() . 操作(集合元素/数组元素 -> {要做什么} )

 

posted @ 2020-09-30 15:53  一文搞懂  阅读(190)  评论(0编辑  收藏  举报