Stream流引入
Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端。
== 现有一个需求: ==
将list集合中姓张的元素过滤到一个新的集合中,然后将过滤出来的姓张的元素中,再过滤出来长度为3的元素,存储到一个新的集合中
// 已知的知识来解决需求
List<String> list1 = new ArrayList<>();
list1.add("张老三");
list1.add("张小三");
list1.add("李四");
list1.add("赵五");
list1.add("张六");
list1.add("王八");
ArrayList<String> list2 = new ArrayList<>();
// 1.将list集合中姓张的元素过滤到一个新的集合中
for(String name : list1){
if(name.startsWith("张")){
list2.add(name);
}
}
ArrayList list3 = new ArrayList();
for (String name : list2) {
if (name.length() == 3){
list3.add(name);
}
}
System.out.println(list3);
输出结果:
[张老三, 张小三]
2.用Stream流操作集合,获取流,过滤操作,打印输出
list1.stream().filter((String name)->name.startsWith("张")).filter((String name)->name.length()==3).forEach((String name)->{
System.out.println("符合条件的姓名:" + name);
});
二、Stream流的格式
Stream<T> filter(Predicate<? super T> predicate);
-----> 参数:public interface Predicate<T> (函数式接口)
----> 抽象方法:boolean test(T t);
-----> 参数:public interface Consumer<T> (函数式接口)
----> 抽象方法:boolean test(T t);
具体参考:
https://blog.csdn.net/m0_60489526/article/details/119984236