java知识学习47-Stream流
Stream流:可理解为一条流水线作业,期间要经过一些处理步骤后得到最终结果。它将函数式风格引入Java中。
范例:
/**
* 案例:
* 创建一个集合,存储多个字符串元素
* 把集合中所有以"张"开头的元素存储到一个新的集合
* 把"张"开头的集合中的长度为3的元素存储到一个新的集合
* 遍历上一步得到的集合
*/
public static void main(String[] args) {
// 普通方式编写的代码量很大,若再增加几个判断又得添加一堆代码
ArrayListlist = new ArrayList<>();
list.add("爱丽丝");
list.add("张力");
list.add("是多少");
list.add("张望着");
list.add("地位");
ArrayListzhangList = new ArrayList<>();
for(String s : list) {
if (s.startsWith("张")) {
zhangList.add(s);
}
}
// System.out.println(zhangList);
ArrayListthreeList = new ArrayList<>();
for(String ss : zhangList) {
if (ss.length() == 3) {
threeList.add(ss);
}
}
System.out.println(threeList);
// Stream流的方式来处理这个问题,逻辑简单且清晰,就是一条流水线
list.stream().filter(s -> s.startsWith("张")).filter(ss->ss.length()==3).forEach(sss-> System.out.println(sss));
Stream流的使用:
Stream流的生成方式:
Stream流的常见中间操作方法:
Stream
Stream
static
Stream
Stream
Stream
Stream map(Function mapper):返回由给定函数应用于此流的元素的结果组成的流。
IntStream mapToInt(ToIntFunction mapper):返回一个IntStream其中包含将给定函数应用于此流的元素的结果。
Stream流的常见终结操作方法:
void forEach(Consumer action):对此流的每个元素执行操作。
long count():返回此流中的元素数 。
Stream流的收集操作:主要是为了把流的数据收集到集合中的操作。
范例: