JavaSE-23.2.5Stream流的收集操作

Posted yub4by

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE-23.2.5Stream流的收集操作相关的知识,希望对你有一定的参考价值。

 1 package day14.lesson2;
 2 
 3 import java.util.*;
 4 import java.util.stream.Collectors;
 5 import java.util.stream.Stream;
 6 
 7 /*
 8 2.6 Stream流的收集操作
 9 
10     对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中
11 
12     Stream流的收集方法
13         R collect(Collector collector) 把结果收集到集合中,参数是一个Collector接口
14 
15     工具类Collectors提供的具体的收集方式
16         public static Collector toList() 把元素收集到List集合中
17         public static Collector toSet() 把元素收集到Set集合中
18         public static Collector toMap(Function keyMapper,Function valueMapper) 把元素收集到Map集合中
19  */
20 public class Demo6Collect {
21     public static void main(String[] args) {
22         ArrayList<String> list = new ArrayList<>();
23         list.add("林青霞");
24         list.add("张曼玉");
25         list.add("王祖贤");
26         list.add("柳岩");
27 
28         //需求1:获取长度为3的元素,组成一个流
29         Stream<String> listStream = list.stream().filter(s -> s.length() == 3);
30         //需求2:把使用Stream流操作完毕的数据收集到list集合中,并遍历
31         List<String> names = listStream.collect(Collectors.toList());
32         for (String name: names){
33             System.out.println(name);
34         }
35         System.out.println();
36 
37         Set<Integer> set = new HashSet<>();
38         set.add(10);
39         set.add(20);
40         set.add(30);
41         set.add(33);
42         set.add(35);
43 
44         //需求3:获取年龄大于25的元素,组成一个流
45         Stream<Integer> setStream = set.stream().filter(s -> s > 25);
46         //需求4:把使用Stream流操作完毕的数据收集到set集合中,并遍历
47         Set<Integer> ages = setStream.collect(Collectors.toSet());
48         for (Integer age: ages){
49             System.out.println(age);
50         }
51         System.out.println();
52 
53         String[] strArray = {"林青霞,30", "张曼玉,35", "王祖贤,33", "柳岩,25"};
54 
55         //需求5:获取数组中年龄大于28的元素,组成一个流
56         Stream<String> arrayStream = Stream.of(strArray).filter(s -> Integer.parseInt(s.split(",")[1]) > 28);
57         //需求6:把使用Stream流操作完毕的数据收集到Map集合中,并遍历;要求:姓名作为键、年龄作为值
58         Map<String, Integer> map = arrayStream.collect(Collectors.toMap(
59                 s -> s.split(",")[0],
60                 s -> Integer.parseInt(s.split(",")[1])
61         ));
62         Set<String> keySet = map.keySet();
63         for (String key: keySet){
64             Integer value = map.get(key);
65             System.out.println(key + "," + value);
66         }
67 
68     }
69 }

 

以上是关于JavaSE-23.2.5Stream流的收集操作的主要内容,如果未能解决你的问题,请参考以下文章

Stream流的收集操作

stream().collect常用操作/stream流的操作

Java8-04-03-笔记

Java8-04-03-笔记

Stream流的操作案例

Java8新特性Stream流的使用