Stream流和收集Stream流(案例)

105 阅读1分钟
Collection<String> list = new ArrayList<>();
Stream<String> s1 = list.stream();//集合拿stream流

Map<String,Integer> map = new HashMap<>();
Stream<String> key = map.keySet().stream();//Map集合拿键流
Stream<Integer> value = map.values().stream();//Map集合拿值流
Stream<Map.Entry<String, Integer>> keyAndValue = map.entrySet().stream();//Map集合拿stream流

String[] arr = {"张三丰","张无忌","周芷若"};
Stream<String> arrS = Arrays.stream(arr);//数组拿stream流 方法1
Stream<String> arrL =Stream.of(arr);//方法2

List<String> list1 = new ArrayList<>();
Collections.addAll(list1,"张无忌","周芷若","赵敏","张强","张三丰","张三丰");
//filter()
list1.stream().filter(s -> s.startsWith("张"));//简化
//filter遍历每一个元素 把每个元送给s进行过滤

//Map加工方法
list1.stream().map( s -> "黑马"+ s).forEach(s -> System.out.println(s));//加工元素
list1.stream().map(s-> new Performer(s)).forEach(s -> System.out.println(s));//将元素加工成对象

//合并流
Stream<String> ss = list1.stream().filter(s->s.startsWith("张"));
Stream<String> ss1 = Stream.of("java1","java2");
Stream<String> ss2 = Stream.concat(ss,ss1);
//distinct()去重复
ss2.distinct().forEach(s -> System.out.println(s));
//limit()//获取前几个元素,
list1.stream().limit(3).forEach(s -> System.out.println(s));//获取前3个元素
System.out.println("-----------------------------");
//skip()//跳过前几个元素
list1.stream().skip(3).forEach(s -> System.out.println(s));//跳过前3个元素

微信图片_20220801123358.jpg


 List<String> list1 = new ArrayList<>();
 Collections.addAll(list1,"张无忌","周芷若","赵敏","张强","张三丰","张三丰");
 Stream<String> s1 = list1.stream().filter(s -> s.startsWith("张"));
 List<String> s2 = s1.collect(Collectors.toList());//把元素收集到List集合
 System.out.println(s2);

 Stream<String> s3 = list1.stream().filter(s -> s.startsWith("张"));
 Set<String> s4 = s3.collect(Collectors.toSet());//把元素收集到Set集合
 System.out.println(s4);

 Stream<String> arr = list1.stream().filter(s -> s.startsWith("张"));
Object[] arrAy = arr.toArray();//把元素收集到数组
 System.out.println(Arrays.toString(arrAy));

微信图片_20220801130536.jpg