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() . 操作(集合元素/数组元素 -> {要做什么} )