1. Stream的常用方法
目的:用于简化集合和数组操作的API,结合了Lambda表达式
//1.得到集合的Stream流对象,再使其封装
Stream<String> stream = list.stream();
//2.过滤数据
stream.filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
//3.统计数据
long size = list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).count();
System.out.println(size);
//4.取前几个,跳过前几个元素
list.stream().limit(2).forEach(s->System.out.println(s));
list.stream().skip(2).forEach(s->System.out.println(s));
//5.map加工法
//需求:把所有人的名字前面加上一个ypp
list.stream().map(s->"ypp:"+s).forEach(s->System.out.println(s));
list.stream().map((s->new Student(s))).forEach(s->System.out.println(s));
//6.concat合并流
Stream<String> s1=list.stream();
List<String> l1=new ArrayList<>();
Stream<String> s2=l1.stream();
Stream<String> concat = Stream.concat(s1,s2);
2.Stream流的收集操作
含义:把Stream流操作后的结果数据转回到集合和数组中去
Stream流:方便操作集合/数组的手段
集合/数组:才是开发的目的
Stream流的收集方法:
List<String> l1 = new ArrayList<>();
l1.add("张三");
l1.add("张三");
l1.add("张三");
l1.add("李四");
l1.add("王五");
l1.add("赵六");
l1.add("张六流");
Stream<String> s1 = l1.stream().filter(s->s.startsWith("张"));
System.out.println(s1);
//List<String> list = s1.toList();
//System.out.println(list);
//把Stream流转换为可变的list的集合
List<String> collect = s1.collect(Collectors.toList());
collect.add("王五");
System.out.println(collect);
//收集成Set集合
Stream<String> s2 = l1.stream().filter(s->s.startsWith("张"));
Set<String> name1=s2.collect(Collectors.toSet());
name1.add("111");
System.out.println(name1);
//收集成数组
Stream<String> s3=l1.stream().filter(s->s.startsWith("张"));
String[] arr2=s3.toArray(s->new String[s]);
System.out.println("内容是"+ Arrays.toString(arr2));