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