package Api;
import java.util.ArrayList;
import java.util.List;
public class Stream {
public static void main(String[] args) {
List list3 = new ArrayList<>();
list3.add("张无忌");
list3.add("张三");
list3.add("张飞");
list3.add("王立伟");
long size = list3.stream().filter(s -> s.length() ==3).count();
System.out.println(size);
java.util.stream.Stream stream = list3.stream().filter(s -> s.startsWith("张"));
System.out.println(stream);
}
}
2
java.util.stream.ReferencePipeline$2@7b23ec81
想要知道为什么第二个运行不了,请求解惑
public static void main(String[] args) {
List<String> list3 = new ArrayList<>();
list3.add("张无忌");
list3.add("张三");
list3.add("张飞");
list3.add("王立伟");
long size = list3.stream().filter(s -> s.length() ==3).count();
System.out.println(size);
List<String> stream = list3.stream().filter(s -> s.startsWith("张")).collect(Collectors.toList());
System.out.println(stream);
}
这不是运行了吗?返回给你一个Stream流对象
stream不能直接打印,这打印出来的是stream的类型
你要打印它具体的属性啊
第二个改成 List<String> resultList = list3.stream().filter(s -> s.startsWith("张")).collect(Collectors.toList());
stream的方法分成两大类,一类是过程定义方法,另一类是计算终端方法。
过程定义方法仅标识当前stream应该做什么操作,实际并不执行,此类方法的返回值类型是java.util.stream.Stream
。比如你这里的filter
就是过程定义方法。
终端方法是实际运算的方法,它会将它之前定义的各种过程定义方法顺序执行一遍,并返回开发者需要的返回值。这些方法有collect
,count
,mapToInt
等等。