Stream学习笔记
程序员文章站
2022-05-22 20:35:40
...
stream(),collect()方法都是java8的新特性,同事们都在用了。代码都看不懂了。我来学习一下。
为什么用Stream?
(因为代码看不懂了。。。)
网上参考这篇,写的很详细很有高度,Stream 可以并行化操作。但是要怎么验证。输出时间测试。
https://developer.ibm.com/zh/articles/j-lo-java8streamapi/
Stream
是java8抽象出的新概念。不是InputStream,不是OutputStream。不是集合元素,不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。Stream 可以并行化操作。是一个接口。
初步使用
获取学生列表中所有学生年龄
代码
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author whl
* @date 2020/10/30
*/
public class StreamTest {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
for(int i = 0;i < 10; i++) {
Student student = new Student("K'" + i,"男","1"+i);
list.add(student);
}
// stream数据源可以是java中的容器 弄一个list<student>来看看
// 获取年龄
// 过去方式
System.out.println("我熟悉的...");
List<String> ages = new ArrayList<>();
for(Student s : list) {
ages.add(s.getAge());
}
for(String age : ages) {
System.out.println(age);
}
// Stream方式 java 8抽象出来的这个概念去做
System.out.println("Stream...");
// stream 为集合创建串行流
// map 方法用于映射每个元素到对应的结果(元素 -> 元素结果)
Stream<Student> stream = list.stream();// list.stream()是一个流
System.out.println("stream -> "+stream);
Stream<String> stringStream = list.stream().map(student -> student.getAge());// .map返回一个新的流
System.out.println("stringStream -> "+stringStream);
List<String> agesNew = list.stream().map(student -> student.getAge()).collect(Collectors.toList());
for(String age : ages) {
System.out.println(age);
}
}
}
运行结果