体验Stream流的作用:
需求:
按照下面的要求完成集合的创建和遍历
创建一个集合,存储多个字符串元素
要求:
1.把所有以"张"开头的元素存储到新集合中
2.把"张"开头的,长度为3的元素再存储到新集合中
3.遍历打印最终结果
解:
未使用Stream流前:
java
package com.itheima.a01mystream;
import java.util.ArrayList;
public class StreamDemo1 {
public static void main(String[] args) {
//1.创建集合
ArrayList<String> list1=new ArrayList<>();
//2.添加元素
list1.add("张无忌");
list1.add("周芷若");
list1.add("赵敏");
list1.add("张强");
list1.add("张三丰");
//3.完成要求
//3.1 把所有以"张"开头的元素存储到新集合中
ArrayList<String> list2=new ArrayList<>();
for (String name : list1) {
if(name.startsWith("张")){ //本例中startsWith方法是找开头为张的进行添加
list2.add(name);
}
}
//3.2 把"张"开头的,长度为3的元素再存储到新集合中
ArrayList<String> list3=new ArrayList<>();
for (String name : list2) {
if(name.length()==3){ //集合list2中已经满足"张"开头,所以只需要判断名字长度即可
list3.add(name);
}
}
//3.3 遍历打印最终结果
for (String name : list3) {
System.out.println(name);
}
/*运行结果为
张无忌
张三丰
*/
}
}
使用Stream流后:
java
package com.itheima.a01mystream;
import java.util.ArrayList;
public class StreamDemo1 {
public static void main(String[] args) {
//1.创建集合
ArrayList<String> list1 = new ArrayList<>();
//2.添加元素
list1.add("张无忌");
list1.add("周芷若");
list1.add("赵敏");
list1.add("张强");
list1.add("张三丰");
//3.完成要求
list1.stream().filter(name -> name.startsWith("张")).filter(name -> name.length() == 3).forEach(name -> System.out.println(name));
/*list1.stream()先获取stream流,
第一次过滤判断:.filter(name -> name.startsWith("张"))
filter里的参数是Lambda表达式,name依次表示每一个姓名,
name -> name.startsWith("张")代表只把张开头的姓名留下,其余的过滤掉
第二次过滤判断:.filter(name -> name.length() == 3)
filter里的参数是Lambda表达式,name依次表示每一个姓名,
name -> name.length() == 3代表只把长度为3的姓名留下,其余的过滤掉
.forEach(name -> System.out.println(name));中forEach方法为遍历,参数为Lambda表达式,
name为姓名,System.out.println(name)代表打印姓名,整体就是依次打印所有姓名
*/
/*运行结果为
张无忌
张三丰
*/
}
}
其中用到了startsWith方法,该方法属于String类: