Stream 流
1. 使用传统的方式对集合里的元素进行过滤
String name;
name.startsWith(" ")
题目;首先筛选姓张的人,其次筛选名字有3个字的人,最后对结果进行打印输出
用stream流的方式对案例进行优化:JDK 1.8之后才有,关注的是做什么,而不是怎么做。Lambda的衍生物
冗杂的代码:

简化后的代码:
package Part3.Day_29;
import java.util.ArrayList;
import java.util.List;
public class demo01list {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.stream()
.filter(name->name.startsWith("张"))
.filter(name->name.length()==3)
.forEach(name-> System.out.println(name));
}
}
2.流式思想概述


Stream流的特点,只能使用一次:
package Part3.Day_29;
import java.util.stream.Stream;
public class demo03stream_filter {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三丰","张翠山","赵敏","周芷若","张无忌");
Stream<String> stream1 = stream.filter((String name)->{return name.startsWith("张");});
stream1.forEach(name-> System.out.println(name));
/*
Stream属于管道流,只能被使用一次
第一个流调用完毕方法把数据转移到第二个流上之后第一个流关闭
所以第一个流此时就不能调用方法了
*/
}
}
Stream流中的常用方法
filter 方法 过滤不满足要求的,在流中留下满足要求的
map方法 将一种类型映射为一种类型 有点像Function类里的唯一的抽象方法apply, 把一种类型转为(映射)为另一种
package Part3.Day_29;
import java.util.stream.Stream;
public class demo04streammap {
public static void main(String[] args) {
Stream<String> stream = Stream.of("1", "2", "3", "4");
//使用map方法把字符串类型的整数映射为Integer类型的整数
Stream<Integer> stream2 = stream.map((String s)->Integer.parseInt(s));
stream2.forEach(i-> System.out.println(i));
}
}
count 方法 统计流中有多少个元素。返回元素为long (此为终结方法,调用此方法后不能再调用流的其他方法)

limit方法 可以对流进行截取,只截取前几个元素,返回的是一个新的流。所以可以继续调用stream流中的其他方法

package Part3.Day_29;
import java.util.stream.Stream;
public class demo06limit {
public static void main(String[] args) {
Stream<String> stream = Stream.of("1","2","3","4");
Stream<String> limit = stream.limit(2);
limit.forEach(name-> System.out.println(name));
}
}
skip方法 跳过前几个元素,返回一个截取之后的新流

concat方法 (静态方法) 可以通过接口名字直接调用

3.练习 集合元素处理

4.方法引用
(1)通过对象名调用成员方法
(2)通过类名引用静态成员方法
(3)通过super可引用父类的成员方法
(4)通过this引用本类的成员方法
5.类的构造器(构造方法)的引用


6. 数组的构造器引用


版权声明:本文为qq_41179957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。