什么是流(Stream)
这个问题可以换种方式来问——流(Stream)的干什么的。
流是用来计算的。
流没有存储空间,流不是存储元素的数据结构;
相反,它通过计算操作的流水线传送诸如数据结构,阵列,生成器功能或I / O通道的源的元件。
这是JDK1.9说明文档的原话。
进一步解释:
我们处理数据无非就分为两种,一种是存储,另一种则是计算了。
Stream流就是负责计算的一种元件。
我们通过一个小例子在理解一下流的使用。
实例
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Stream_Demo {
public static void main(String[] args) {
User u1 = new User("a",20,1);
User u2 = new User("b",21,2);
User u3 = new User("c",22,3);
User u4 = new User("Sky",23,4);
User u5 = new User("Song",24,5);
List<User> userList = Arrays.asList(u1,u2,u3,u4,u5);
userList.stream()
//过滤年龄大于22岁的人
.filter((user)->{return user.getAge() > 22;})
//返回大写的名字
.map((user)->{return user.getName().toUpperCase();})
.sorted(Comparator.reverseOrder())//倒序
.forEach(System.out::println);//打印
}
}
运行结果:
SONG
SKY
有关 流(Stream)的方法还有很多:
这其中有很多方法的参数类型都是 “函数式接口”;
所以要想很好的利用流(Stream),就必须先掌握 “函数式接口”。
相关文章:《函数式接口》链接