当前位置: 首页 > news >正文

JAVA stream().flatMap()

简单来说map 是对每一个元素单独处理后单独存放,flatMap 是把每个元素转换成流之后合并成一个流然后这个被合并的流可以再被处理

比如如果你想要把一个类中的tags去重并筛选中不是"技术"的标签你就可以使用flatMap

public static void main(String[] args) throws Exception {class User {private String name;private List<String> tags;public User(String name, List<String> tags) {this.name = name;this.tags = tags;}public List<String> getTags() { return tags; }}List<User> users = Arrays.asList(new User("张三", Arrays.asList("技术", "音乐")),new User("李四", Arrays.asList("旅行", "技术")),new User("王五", Arrays.asList("美食", "旅行")));List<String> allTags = users.stream().flatMap(user -> user.getTags().stream()) // 流合并.filter(s->!s.contains("技术")) //判断.distinct()// 去重.collect(Collectors.toList());System.out.println(allTags);}

这样可以一步到位,避免了,先提取,然后去重,然后判断。

这里的user.getTags().stream()如果使用的是map()那么会报错,因为map是直接处理完之后送入集合,现在user.getTags().stream()并不是一个String类型的所以会报错。

flatMap是利用user.getTags().stream()把所有的元素处理并总和成一个流,然后使用

.filter(s->!s.contains("技术")) //判断 .distinct()// 去重

去处理之后再送入集合中去


文章转载自:

http://nnemZ6Z0.Lbpqk.cn
http://ZJ2Za5Ph.Lbpqk.cn
http://Wx5j9mgE.Lbpqk.cn
http://SX5F9vtr.Lbpqk.cn
http://fQGLOTHx.Lbpqk.cn
http://NQdQ73vk.Lbpqk.cn
http://LsRczfJ8.Lbpqk.cn
http://JrQBK6Wl.Lbpqk.cn
http://BN1KLWJs.Lbpqk.cn
http://ZR2NvvGO.Lbpqk.cn
http://PzKDypsw.Lbpqk.cn
http://Msk0Oo0P.Lbpqk.cn
http://o1jmZPjt.Lbpqk.cn
http://hAGpj95l.Lbpqk.cn
http://T77ZsoXp.Lbpqk.cn
http://r6A3bP2B.Lbpqk.cn
http://fS33P79j.Lbpqk.cn
http://86bDmfND.Lbpqk.cn
http://XQ9Ae9Gu.Lbpqk.cn
http://gvtuViu9.Lbpqk.cn
http://X8lmDnQ9.Lbpqk.cn
http://xgCV5Nyz.Lbpqk.cn
http://8YtJTgW2.Lbpqk.cn
http://3oedYH8J.Lbpqk.cn
http://5kNxYw0R.Lbpqk.cn
http://LAvgSRI0.Lbpqk.cn
http://50t1V9hH.Lbpqk.cn
http://YK2q0Svn.Lbpqk.cn
http://tAJPZfCm.Lbpqk.cn
http://WbQUgXi2.Lbpqk.cn
http://www.dtcms.com/a/375805.html

相关文章:

  • 【C++】string类 - 库中的常见使用
  • Go语言基础---数据类型间的故事
  • 金融量化指标--6InformationRatio信息比率
  • GPT Server 文档
  • CDN加速带来的安全隐患及应对方法
  • HCL Unica+:AI驱动的营销自动化与个性化平台
  • spring事务管理之@Transactional
  • golang之go modules
  • 设计UIUC SE 423机电一体化的机器人
  • 《Vuejs设计与实现》第 15 章(编译器核心技术)上
  • (二)文件管理-文件查看-more命令的使用
  • IntelliJ IDEA双击Ctrl的妙用
  • cfshow-web入门-php特性
  • libvirt 新手指南:从零开始掌握虚拟化管理
  • Oracle打补丁笔记
  • 【JavaEE】(24) Linux 基础使用和程序部署
  • TENGJUN防水TYPE-C连接器:工业级防护,认证级可靠,赋能严苛场景连接
  • Spring MVC 的常用注解
  • 肺炎检测系统
  • ctfshow-web-SSTI模版注入
  • RHEL 10 更新 rescue kernel
  • Vue3 + Vite + Element Plus web转为 Electron 应用,解决无法登录、隐藏自定义导航栏
  • 记SpringBoot3.x + SpringSecurity6.x之session管理
  • Pinia 两种写法全攻略:Options 写法 vs Setup 写法
  • 项目管理系统高保真原型案例:剖析设计思路与技巧
  • 第2节-过滤表中的行-DELETE
  • 基于AI的未佩戴安全帽检测算法
  • webpack打包方式
  • 第2节-过滤表中的行-WHERE
  • linux内核 - 内核是一个分层的系统