AI 助理
备案 控制台
开发者社区 大淘宝技术 文章 正文

带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)

简介: 带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)

stream的实用方法和注意事项


image.pngimage.png作者:袁俊子(圆镜) 出品:大淘宝技术

 

 

相信大家一定都在项目开发中享受过stream带来的便利性和优雅的代码风格。接下来补充几个项目中不常见到但是同样实用的api,同时跟大家一起探讨stream这把双刃剑的另一面。

 

使用但不常见的方法

 

filter、map、skip等方法想必大家都十分熟悉 无需赘述。这里仅介绍工程中使用较少但同样实用的方法。

 

reduce

 

reduce有3个参数:初始值、累加器、组合器。下面通过几个case为大家逐一讲解。由于比较绕,下面贴上ide执行结果

 

image.png

 

 

 

当顺序读流或者累加器的参数和它的实现的类型匹配时,我们不需要使用组合器。通常只有在处理对象属性时则需要组合器来帮助编译器推断入参类型。实际在串行流中组合器并不会实际执行,只需要出入参类型满足编译器推断要求即可。可以看到上方result3的计算,末尾组合器适用max还是min 结果是一样的。

 

allMatch/anyMatch/noneMatch

 

判断集合中是否 全部都匹配/存在任意匹配/不存在匹配 某一规则。

 


比如下面一段代码,判断集合中的对象是否全部合法。语义十分简单。下面对比stream写法和常规写法。两种写法的运行结果是一样的。

 

@Data @AllArgsConstructor
public static class Calendar { private LocalDate date; private boolean today; private boolean signed;
}
//日历初始化
LocalDate now = new LocalDate(); List<Calendar> calendars = Arrays.asList(
new Calendar(new LocalDate(1661174238000L), false, false)
, new Calendar(new LocalDate(1661828371000L), false, false)
, new Calendar(new LocalDate(1661433438000L), false,  false)
, new Calendar(new LocalDate(1661519838000L), false,  false)
, new Calendar(new LocalDate(1661779038000L), false,  false)
, new Calendar(now, true, true)
);
//判断昨天是否签到过。写法一
boolean yesterdaySigned = calendars.stream()
.anyMatch(
t -> Days.daysBetween(t.getDate(), now).getDays() == 1 && t.isSigned()
);
System.out.println("昨天是否签到过 -> " + yesterdaySigned);
//写法二
boolean yesterdaySigned2 = false; for (Calendar calendar : calendars) {
if (Days.daysBetween(calendar.getDate(), now).getDays() == 1) {
//找到昨天的日历,并判断是否签到
yesterdaySigned2 = calendar.isSigned();
break;
}
}
System.out.println("昨天是否签到过写法二 -> " + yesterdaySigned2);

 

 

 

这里写法一虽然更简练但是存在问题,大家有看出来的吗。这个问题放在“注意事项”中专门讲解。

 

带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2) https://developer.aliyun.com/article/1339661?groupCode=taobaotech

编程技术君
目录
相关文章
编程技术君
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
编程技术君
64 0
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
编程技术君
|
IDE 开发工具
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)
编程技术君
84 0
编程技术君
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(4)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(4)
编程技术君
59 0
编程技术君
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
编程技术君
101 0
编程技术君
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
编程技术君
103 1
编程技术君
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
编程技术君
91 1
编程技术君
|
算法
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
编程技术君
89 1
编程技术君
|
网络协议
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
编程技术君
123 1
编程技术君
|
SQL 缓存 JSON
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
编程技术君
151 1
编程技术君
|
算法 API
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(5)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(5)
编程技术君
61 0

大淘宝技术

热门文章

最新文章

  • 1
    分布式1024节点!1天玩转PolarDB-X超大规模集群
  • 2
    proxy error: could not proxy request解决方案
  • 3
    王坚回顾阿里云10年:工程师拿命换来的成就
  • 4
    OSS-Android SDK 搭建总结
  • 5
    深入解析@SpringBootApplication注解:简化Spring Boot应用的配置
  • 6
    Elastic实战:通过logstash-input-jdbc实现mysql8.0全量/增量同步至ES7.x
  • 7
    RIPv1配置(Enabling Rip)
  • 8
    [Silverlight]奇技银巧系列-2
  • 9
    一个简单AutoRun病毒专杀的源代码
  • 10
    Microsoft实现的IOC DI之 Unity 、Service Locator、MEF
  • 1
    深入理解 JavaScript 执行上下文与 this 绑定机制
    33
  • 2
    ES6 全部特性详解
    37
  • 3
    5G技术对软件开发的影响及应对策略
    28
  • 4
    Vue v-for 进阶指南:in 与 of 的区别及应用场景 | 笔记
    31
  • 5
    探索量子计算在软件开发中的角色
    29
  • 6
    WebAssembly:让前端性能突破极限的秘密武器
    11
  • 7
    利用DevSecOps强化应用安全
    7
  • 8
    探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
    8
  • 9
    探索前端与 AI 的结合:如何用 GPT-4 助力开发效率
    10
  • 10
    从 Web 2.0 到 Web 3.0:前端开发的历史与未来
    12
  • 相关电子书

    更多
  • 低代码开发师(初级)实战教程
  • 冬季实战营第三期:MySQL数据库进阶实战
  • 阿里巴巴DevOps 最佳实践手册
  • 下一篇
    AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片

    玻璃钢生产厂家天津公园玻璃钢雕塑公司沧州玻璃钢卡通雕塑定制个旧市玻璃钢雕塑费用秦皇岛玻璃钢雕塑制作三明玻璃钢卡通雕塑价格伊春卡通玻璃钢雕塑苏州玻璃钢花盆价格陕西个性化玻璃钢雕塑销售厂家无棣玻璃钢花盆花器玻璃钢卡通门头雕塑设计价位商场美陈计划商场面条美陈厦门商场开业美陈玻璃钢喷砂立体雕塑墙白沙黎族自治县玻璃钢雕塑平湖玻璃钢雕塑生产厂泰州玻璃钢仿真水果雕塑湖州校园玻璃钢雕塑生产厂家焦作玻璃钢智能雕塑玻璃钢立体卡通雕塑上海商场dp美陈雕塑汕尾玻璃钢雕塑厂家现货山东大型商场美陈费用大熊玻璃钢雕塑玻璃钢雕塑质量黔南玻璃钢花盆溧阳玻璃钢长颈雕塑北京玻璃钢米奇卡通雕塑河南常用商场美陈供应商欧式风格玻璃钢雕塑大卫雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化