package com.wu.stream._01;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
stream流的使用
1.生成流(通过数据源(集合 数组等)生成流 (list.stream))
2.中间操作(一个流后面可以跟随零个或者多个中间操作,其目的主要是打开流,做出某种程度的数据过滤/映射
然后返回一个新的流教给下个操作使用 (filter()))
3.终结操作(一个流只能有一个终结操作 当这个操作执行后 流就被使用”光“了 无法在被操作
所以者必定是最后一个操作 (forEach() )
stream流的常见生成方式
Collection体系的集合可以使用默认方法stream()生成流default Stream<长> stream(
*/
public class Demo01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("朱元璋");
list.add("刘伯温");
list.add("张三丰");
list.add("张无忌");
list.add("鬼剑士");
list.add("神枪手");
list.add("张飞");
// list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3)
// .forEach(System.out::println);
//直接阅读代买的字面意思即可完成展示无关逻辑方式的语义:获取流 过滤张 过滤长度为3 诼一打印
//filer 过滤(已张开头的 长度为3的)
list.stream().filter(s -> s.startsWith("张") && s.length() == 3)
.forEach(System.out::println);
// demo01(list);
}
//stream体验
private static void demo01(ArrayList<String> list){
//普通for循环
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
System.out.println("--------------------------------");
//迭代器
Iterator<String> iter = list.iterator();
while (iter.hasNext()){
String s = iter.next();
System.out.println(s);
}
System.out.println("---------------------------------");
//stream流的终结方法forEach
list.forEach(System.out::println);
System.out.println("---------------------------------");
list.forEach(s -> System.out.println(s));
}
private static void demo02(ArrayList<String>list){
// 把集合中所有 ”张“ 开头的元素存储到一个新的集合中
ArrayList<String> list1 = new ArrayList<>();
for (String s :list){
if (s.startsWith("张")){
list1.add(s);
}
}
//把 ”张“ 开头的集合中长度为三的元素存储到新的集合中
ArrayList<String> list2 = new ArrayList<>();
for (String s : list1){
if (s.length() == 3){
list2.add(s);
}
}
for (String s : list2){
System.out.println(s);
}
}
}
Stream流 - 01
最新推荐文章于 2024-10-17 11:21:39 发布