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

java8特性Stream 常见用法

最近在开发中看到同事使用stream 进行集合的数据转换List<object> ->List<String>

List<object> --> Map<Long, object>,感觉十分简单方便,上网找了一下资料学习一下

Java 8 Stream | 菜鸟教程

记录一下我们常见用法

.stream()− 为集合创建串行流

1、List<Object> --> List<String>

//List<Object> --> List<String> List<User> resultList = new ArrayList<>(); List<String> newList = resultList.stream().map(e -> e.getName()).collect(Collectors.toList()); // List<map> --> List<String> List<String> contractIds = array.stream().map(m -> MapUtils.getString(m, "contractId").toString()).collect(Collectors.toList());

2、List<User> --> Map<Long, User>

List<User> --> Map<Long, User> List<User> resultList = new ArrayList<>(); Map<Long, User> idToUser = resultList.stream().collect(Collectors.toMap(User::getId, (user -> user)));

3、List<Map<String, Object>> --> Map<String, Integer> countMap

List<user> --> Map<String, Integer> countMap

List<Map<String, Object>> reList = stdGoodsTempDao.queryCountByRegcardnm(paramMap); Map<String, Integer> countMap = reList.stream().collect(Collectors.toMap(map -> (String) map.get("regcardnm"), (map -> (Integer) map.get("goodsCount")))); // List<user> --> Map<String, Integer> countMap Map<Integer, String> countMap = list.stream().collect(Collectors.toMap(e -> e.getId(), e -> e.getBillNum()));

4、.stream().parallel().forEach轻松实现多线程

List<StdRegcardTemp> lists=new ArrayList<>(10); lists.stream().parallel().forEach(item -> { //具体处理 });

5、获取某个字段最大值的那条数据,

.stream().max(Comparator.comparing(Student::getRecord)).get();

Student student = stu.stream().max(Comparator.comparing(Student::getRecord)).get();

6、 list<object> --> list<object> 获取满足条件的返回

.filter( 获取type =1的数据

List<Cycle> cycleStream = cycleList.stream().filter( cycle -> 1.equals(cycle.getType())).collect(Collectors.toList());

7、 list<object> --> list<Integer> 获取满足条件的数,并且取出指定字段

List<Integer> projectConfigIds = cycleList.stream().filter( cycle -> "1".equals(cycle.getType())) .map(Cycle::getId) .collect(Collectors.toList());

8、修改object 属性的值,批量修改list 中对象的某个值

StdSubcodeBhs = StdSubcodeBhs.stream().peek(x -> x.setSubmitState(1)).collect(Collectors.toList());

9、list 去重

List newList = (List) list.stream().distinct().collect(Collectors.toList()); // 根据某个字段去重 //根据name进行去重 List<HospItemDO> list = addItems.stream().collect( Collectors.collectingAndThen(Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(HospItemDO::getItemcode))), ArrayList::new) );

10、字段类型转换 List<Integer> --> List<String>

List<Integer> declareTypes = new ArrayList(); List<String> declareTypes1 = declareTypes.stream().map(String::valueOf).collect(Collectors.toList());

----以下是参考扩展

filter 使用参考这个文章,写的很好

Stream filter()过滤有效数据_爆米花9958的博客-CSDN博客_stream.filter

http://www.jsqmd.com/news/511708/

相关文章:

  • VideoAgentTrek Screen Filter 入门指南:Ubuntu系统下的环境配置与模型调用
  • 前端开发实战:用D3.js在直角坐标系中实现动态数据可视化
  • 跨平台文本渲染挑战:SukiUI字体兼容性与国际化解决方案深度解析
  • 2026年防火防爆板材供应商推荐:剖析翔富建材在专业赛道的产品力与服务体系 - 速递信息
  • 如何快速掌握StyleGAN2-ADA训练:从零到精通的完整实战指南
  • 如何使用Statik:将静态文件无缝嵌入Go可执行文件的终极指南
  • 英语_阅读_great inventions_待读
  • 终极指南:如何使用codi.vim交互式便签板提升Vim开发效率
  • 询问百年祥业装饰在福州口碑,设计方案及设计师经验怎样 - 工业推荐榜
  • Rainmeter开发文档可搜索性提升:标签与分类的终极指南
  • TensorFlow Serving 项目教程
  • 如何快速构建分布式社交网络:Social Stream框架完整指南
  • 2026年福州室内装修设计施工公司排名,专业靠谱品牌全解析 - 工业设备
  • 终极指南:如何用Vulcand构建弹性的微服务API网关
  • 如何快速掌握InSPEQTor监控工具:面向初学者的完整指南
  • TensorFlow Serving 使用教程
  • Refract 开源项目教程
  • SSL证书购买小技巧:以阿里云为例子,个人测试证书(原免费证书)有效期3个月,一年之后需要重新免费购买 | Certimate开源免费的自托管 SSL 证书自动化管理工具
  • Terasology终极指南:如何快速掌握开源体素世界引擎的10个技巧
  • 2026福州室内装修设计施工服务哪家口碑好,为你揭晓答案 - 工业品网
  • Nitro服务器推送技术:提升页面加载速度的新方法
  • 2026年室内装修设计施工靠谱品牌盘点,福州这些公司值得关注 - 工业品牌热点
  • 8款人工智能利器:轻松搞定软件工程毕设论文与代码复现
  • Silero Models安全加固:10个关键步骤保护你的语音处理系统 [特殊字符]️
  • Leather Dress Collection 低代码集成Visio:根据文本描述自动生成系统架构图
  • Z-Image Atelier 生成艺术展:探索人工智能与人类想象力的边界
  • 如何快速上手 gorocksdb:Go 语言操作 RocksDB 的终极指南
  • GaN与SiC功率器件选型指南:高频效率vs高温可靠性
  • 2026年存包柜生产企业价格大比拼,北京中泰祥瑞家具优势在哪 - 工业品网
  • VMAF静态分析规则:自定义Clang-Tidy检查器确保代码质量