import java.util.ArrayList;
import java.util.Arrays;
/*
Interface Stream<T>:支持顺序和并行聚合操作的一系列元素。也就是流式操作
举例:
给定一个字符串数组,将里面满足姓张的,且名字字符数量为3个的打印出来
*/
public class Demo09Stream {
public static void main(String[] args) {
methodComm();
methodStream();
}
/*
普通方式
*/
private static void methodComm() {
System.out.println("=================== 采用普通方式=====================");
String[] strs = new String[]{"张三丰","刘德华","周润发","张德玉","张丰裕香",};
System.out.println(Arrays.toString(strs));
System.out.println("筛选后的数据为:");
ArrayList<String> alA = new ArrayList<>();
//先筛选带 张 的字符串
for (String str : strs) {
if(str.contains("张")){
alA.add(str);
}
}
ArrayList<String> alB = new ArrayList<>();
//再筛选字符数为三个的字符串
for (String s : alA) {
if(s.length() == 3){
alB.add(s);
}
}
//打印输出
for (String s : alB) {
System.out.println(s);
}
}
/*
stream方式
*/
private static void methodStream() {
System.out.println("=================== 采用Stream方式 =====================");
String[] strs = new String[]{"张三丰","刘德华","周润发","张德玉","张丰裕香",};
System.out.println(Arrays.toString(strs));
Arrays.stream(strs)
.filter((s)->s.contains("张"))
.filter((s)->s.length() == 3)
.forEach((s)-> System.out.println(s));
}
}