Java ,现在工作中 stream 用的多吗

2019-04-13 14:43:44 +08:00
 kosmosr

我个人在工作中基本都是用 stream 来代替 foreach 处理数据的,代码简洁了好多。。 但是我同事基本还是用 foreach 处理的,不知道大家、周围用这个的多不多

6414 次点击
所在节点    Java
43 条回复
thisisgpy
2019-04-13 14:58:27 +08:00
没有 stream,我现在手里这个需求我能写成自闭症
lqw3030
2019-04-13 14:58:57 +08:00
list.forEach(x->{xxx}) 比较经常用,但是有时候需要维护一个计数 index 就不方便了,代码块里不允许可变变量
lihongjie0209
2019-04-13 15:01:07 +08:00
map

groupBy

filter

anyMatch

allMatch


这些你用 for 循环写出来代码难看的要死。

关键是后面你改代码的时候很舒服
lihongjie0209
2019-04-13 15:01:54 +08:00
@lqw3030
可以使用 IntStream.range(0, list.size())..... 这样的方式操作索引
kosmosr
2019-04-13 15:05:24 +08:00
@lihongjie0209 是的 还有个 collect,写起来很方便 hhh
loveCoding
2019-04-13 15:05:57 +08:00
用习惯了之后,简直爽的飞起啊
misaka19000
2019-04-13 15:08:59 +08:00
我们 code review 如果发现可以使用 stream 的地方没使用会影响绩效
Cbdy
2019-04-13 15:11:54 +08:00
不仅用 stream,还用 vavr
micean
2019-04-13 15:13:30 +08:00
看情况,stream 里只能抛 RuntimeException,包个 try catch 好难看……
micean
2019-04-13 15:14:20 +08:00
另外也不能 return 到外层
kotlin 对此做了一些糖
hantsy
2019-04-13 15:16:54 +08:00
Stream, Completablefuture, Optional 在 Java 8 是最常见的。Spring Data JPA ( JPA 2.2 )早已经支持 Stream, Optional 返回结果。

现在已经将工作环境切换到 Java11,Optional 现在支持 map, flatMap 了,var 类型推断,List.of, Map.of 等开始用了。

不过 Future,Completablefuture 用起来不舒服,没有 Reactor API 方便。
dyxLike
2019-04-13 15:18:25 +08:00
网上说不用并行流的情况下 stream foreach 的效率比循环要低, 不知道大家是怎么看的?
Cbdy
2019-04-13 15:18:44 +08:00
@micean 你需要 vavr
janus77
2019-04-13 15:23:18 +08:00
foreach map filter findFirst
这几个用的最多
lihongjie0209
2019-04-13 15:31:03 +08:00
@dyxLike 你觉得机器值钱还是人值钱,而且只要你一直升级 jvm, 这些性能问题在 jvm 层面都帮你解决了。 前几年还说不能用字符串拼接呢
allanzhuo
2019-04-13 15:49:48 +08:00
刚开始用,感觉很香。
wysnylc
2019-04-13 16:00:36 +08:00
@lihongjie0209 #4 Stream.iterate(0, item -> item + 1).limit(10).forEach(
hodur
2019-04-13 16:31:18 +08:00
用得很爽,不过现在这个项目用的还是 java7
xiaweiyang
2019-04-13 17:08:07 +08:00
你同事是不想学,stream 好用的飞起,可以节省不少时间,然后好划水。
passerbytiny
2019-04-13 17:13:06 +08:00
早就想用了,不过优先级排的很靠后,应该属于 Java 8 新特性中最晚启用的,毕竟要非常大地改变编码习惯。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/554789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX