Java 8新特性之Stream流式编程
Java新特性之Stream流式编程
一、基础用法(stream,map,sorted,limit,collect)
list.stream().map(Person::getName).sorted().limit(10).collect(Collectors.toList());
解读: 1)stream() 将list转换成为流 2)map() 将流中的每一个元素 T 映射为 R(类似类型转换);
将原来的list(Person)转换成为List(String),其中的String元素为Person的name成员变量 3)sorted() 排序 4)limit() 只保留前十的元素 5)collect() 将流转换回集合类型
二、filter用法
list.stream().filter(person -> person.getAge() == 20).collect(Collectors.toList());
解读:
1)filter() 保存filter内boolean为true的内容
三、skip用法
list = list.stream().skip(2).collect(Collectors.toList());
解读:
1)skip() 去除前 n 个元素
四、distinct用法
distinct()
解读:
1)去除重复元素,这个方法是通过类的 equals 方法来判断两个元素是否相等的
五、anyMatch(T -> boolean) 用法
boolean b = list.stream().anyMatch(person -> person.getAge() == 20); 解读: 1)流中是否有一个元素匹配给定的 T -> boolean 条件
六、allMatch(T -> boolean) 用法
boolean result = list.stream().allMatch(Person::isStudent); 解读: 1)流中是否所有元素都匹配给定的 T -> boolean 条件
七、noneMatch(T -> boolean)用法
boolean result = list.stream().noneMatch(Person::isStudent); 解读: 1)流中是否没有元素匹配给定的 T -> boolean 条件
八、findAny()和 findFirst()
findAny()和 findFirst() 解读: 1)findAny() 找到其中一个元素 (使用 stream() 时找到的是第一个元素;使用 parallelStream()并行时找到的是其中一个元素) 2)findFirst() 找到第一个元素
九、joining 连接字符串用法
解读:
String s = list.stream().map(Person::getName).collect(joining(","));
#实战记录#
1)stream根据汉字首字母分组排序
Map<Character, List<WeiBo>> collect = bos.stream().collect(Collectors.groupingBy(p1 -> { return Character.toUpperCase(PinyinUtil.getFirstLetter(p1.getWord().charAt(0))); }, TreeMap::new, Collectors.toList()));
2)stream根据汉字首字母排序
List<WeiBo> weiBoList = bos.stream().sorted((p1, p2) -> instance.compare(p1.getWord(), p2.getWord())).collect(Collectors.toList());
3)stream过滤得到所有标题为"建议"和分类"国内新闻"列表
List<WeiBo> bos = weiBos.stream().filter(v -> v.getWord().contains("建议"))
.filter(v -> v.getCategory().contains("国内新闻")).collect(Collectors.toList());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现