目录
认识Stream
什么是Stream?
Stream是jdk8开始新增的一套API(java.lang.stream.*),可以用于操作集合或数组的工具。
优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方法来操作集合或数组中的数据,代码更简洁,可读性更好。 (集合API经典白雪)
案例:
List<String> list2=list.stream().filter(a -> a.startsWith("张")).filter(b -> b.length()==3).collect(Collectors.toList());
//filter()过滤器,括号里面用lambda表达式, a,b随便取,表示集合list里面的元素。
Stream流的使用步骤
1.获取Stream流
//list集合获取
Stream<String> stream1=list.stream();
//set集合获取
Stream<String> stream2=set.stream();
//map集合获取
Set<String> keys=map.keySet();
Stream<String> stream3=keys.stream();
Collection<Integer> values=map.values();
Stream<Integer> stream4=values.stream();
Set<Map.Entry<String,Integr>> entries=map.entrySet();
Stream<Map.Entry<String,Integer>> stream5=entries.stream();
//数组获取
Stream<String> s1=Arrays.Stream(name2);//使用Arrays
Stream<String> s2=Stream.of(name2); //使用Stream
Stream的常用方法
中间方法:
注意: dintinct去重复,自定义类型的对象(希望内容一样就认为重复,重写hashcode,equals)
终结方法:
、
一个流只能收集一次
Stream<String> stream1=names.stream().filter(a -> a.contains("张"));
List<String> li1= stream1.collect(Collectors.toList());
Set<String> li2=stream2.collect(Collectors.toSet());
//因为stream1这个流已经收集到list集合里,所以就不能再收集到其他容器里,
//一个流只能收集一次