JavaSE-23.2.5【Stream流的收集操作】

复制代码
 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 }
复制代码

 

posted @   yub4by  阅读(66)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示