Stream与传统写法的区别
传统方式对集合过滤
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("张三丰");
list.add("张良");
list.add("赵敏");
list.add("周芷若");
//创建一个集合ListB来存储,以张开头的元素
List<String> listB = new ArrayList<>();
for (String s : list) {
if(s.startsWith("张")){
listB.add(s);
}
}
//创建一个集合ListC来存储,只有两个的元素
List<String> listC = new ArrayList<>();
for (String s : listB) {
if(s.length()==3){
listC.add(s);
System.out.println(s);
}
}
}
Stream写法
JDK1.8的特性
关注的是做什么,而不是怎么做
方法:filter() -> 传入lambda表达式
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("张三丰");
list.add("张良");
list.add("赵敏");
list.add("周芷若");
//使用stream流
list.stream()
.filter(name->name.startsWith("张"))
.filter(name->name.length()==3)
.forEach(name-> System.out.println(name));
}
方法
count方法:统计Stream流中的元素个数 ,是一个终结方法
limit方法:对流中的元素进行截取,返回一个新的流,是一个延迟方法
skip方法:跳过前几个元素,如果超过元素就返回一个null
concat方法:将两个流合拼在一起