qwerthhusn
V2EX  ›  Java

JDK17 都出来了,感觉现在很多资深程序员 Stream 不会, Lambda 不会, Java .time 包不会

  •  
  •   qwerthhusn · Jul 11, 2022 · 19335 views
    This topic created in 1438 days ago, the information mentioned may be changed or developed.

    不少资深人士写代码的时候还是各种 for 循环。

    Lambda 也不用,还用各种匿名内部类。

    还有 JDK8 的时期时间库,很多人还是在用 Date ,Calender 。现在的 LocalDate, LocalDateTime, YearMonth, ZonedDateTime 做时间计算真的特别直观简单,但是他们就喜欢用 Date ,简单的计算就用毫秒加减,复杂点的计算就先换成 Calender ,完事后再转换回 Date 。

    甚至 JDK7 的 try-with-resources 语法我都感觉不少人都不知道。

    所以,现在“JDK8 是主流”这句话是不对的,而是“JVM8 是主流”才是对的。语法的主流应该是 J2SE 1.5 。

    Supplement 1  ·  Jul 11, 2022
    很多人说“会这个能咋样,能写出 NB 代码吗?工资会变高吗?”
    当然不会,但是学会并使用这些功能,在某些或者大部分场景下,能让代码更简洁。
    简洁的意思就是代码敲的更快,代码量更少,缩进或者嵌套更少,能更快的解决问题。
    更快的意思是,能有更多的时间搞别的事情,比如摸鱼!
    185 replies    2022-07-14 10:54:32 +08:00
    1  2  
    binge921
        101
    binge921  
       Jul 12, 2022
    有没有一种可能 你定义的”很多人不会“ 只是来源于你自己的感受 如果这话换我来讲 我想说 我身边的都会
    hahastudio
        102
    hahastudio  
       Jul 12, 2022
    一整页都没看到一个 code block
    kett
        103
    kett  
       Jul 12, 2022
    一个学不学的问题而已,一些人至于戾气那么大吗?跟吃了枪子似的,不嫌累吗?。
    zw1one
        104
    zw1one  
       Jul 12, 2022
    如果用旧的写法符合代码规范、按时按量完成工作、应用质量也没有问题,那为啥要换。学习成本和收益的问题罢了
    abcd106
        105
    abcd106  
       Jul 12, 2022
    stream 和 lambda 写的很爽呀,也很简短。

    <img src = 'https://s3.bmp.ovh/imgs/2022/07/12/24b6eb7cad514b1e.png' />
    windyboy
        106
    windyboy  
       Jul 12, 2022
    @coetzee 电车要取代油车还有很长的路。油车已经经过百年的发展
    现在的国产电车绝大多数都没有经过换代的考研。
    应用程序用更新的 SDK 不带表程序就多好。
    SDK 再牛也得运行在操作系统上。
    所以从整个程序构成的体系上,跟我讲 JDK 先进代表水平高?
    Rust 也才刚进入 Linux 内核,Java ? JDK ?路还很长
    coetzee
        107
    coetzee  
       Jul 12, 2022
    上帝视角开了以后,啥都不行。先进性是用每一代产物来表现得,你非得拿着历史说事儿,我只能说,大清国无敌!
    fredli
        108
    fredli  
       Jul 12, 2022
    放弃学习了,也没什么
    coetzee
        109
    coetzee  
       Jul 12, 2022
    还有用成熟说事儿的人,任何东西都在进化,不能适应环境进化了,就是衰退的表现。我能看到楼上老哥就是老开发,巧了,我也是老开发,老开发就爱稳定!就爱跟你讲 Linux 这么稳定,结果大多数还不是专业内核开发,连 CPU 架构都能革新,为什么他们纠结稳定呢?他们的“稳定”对谁有利?稳定谁不知道是好的,但是他们讲的“稳定”对谁有利呢?
    coetzee
        110
    coetzee  
       Jul 12, 2022
    老开发,懂行。老开发见识多,经验丰富,真牛,JCP 整体团队的人都没你们牛逼。
    用你们的话术,限定上下文的讨论,你们管这些叫不稳定,下结论:JCP 垃圾,JCP 你们要走的路很长呢!
    windyboy
        111
    windyboy  
       Jul 12, 2022
    @coetzee 好吧,你伟大的 JDK 程序不需要操作系统
    看不上 linux 没问题,随便挑一个操作系统,有 JDK17 开发的?
    coetzee
        112
    coetzee  
       Jul 12, 2022
    @windyboy 挺会聊天啊,还看不上 Linux 的帽子都带上来了?
    acidsweet
        113
    acidsweet  
       Jul 12, 2022
    @Suddoo 这些东西什么时候都不会过时的;反而是新特性说到底只是个糖,反而是容易过时的
    coetzee
        114
    coetzee  
       Jul 12, 2022
    这曲解和戴帽子的聊天方式,真的让人难受。用大多数的人说法就是,想学就学,不想学就算,给别人不停的灌输在自己的语境之中讨论,有意思吗?
    keymao
        115
    keymao  
       Jul 12, 2022
    笑了。 我就不明白了,编程语言不是用来做事的么。 大型软件很多都不会用一个语言或工具来完成的。 用 WPF 做外壳,用 c++做算法,用 java 做后端,用 python 去粘合各模块都是很正常的事情。
    就为了个新特性都能说两页,是不是工作不够充实? 想用新特性 新 jdk 可以啊, 当老板自己说了算了,每年都可以换新版本,自己说了不算就歇歇把 好吧? 何苦给自己找不痛快。
    windyboy
        116
    windyboy  
       Jul 12, 2022
    @coetzee 那回到正题
    基础的操作系统,编译器,用什么写的?
    绝大多数都是老掉牙的东西吧。

    在程序的世界实际上就是在依赖一些老掉牙且稳定的东西
    Gmzx
        117
    Gmzx  
       Jul 12, 2022
    @coetzee 稳定在大多数企业内高于一切,企业视角和员工视角是 2 个相反的方向。老 Linux 跑得好好的,也稳定运行的,你为什么要去升级一下内核?老的服务器跑得好好的,你非要去断电升级 CPU 吗?老的东西如果正常在运行,那就一直放在那运行,谁也别去乱动,新的东西,如果有额外的人力和精力,也不是不能用新技术,但是如果出了问题,不稳定最后还是技术 leader 背锅。
    coetzee
        118
    coetzee  
       Jul 12, 2022
    不在一个语境下,没法聊天。先理解下什么是先进性,不然最后拿数学和物理跟我说,为啥数学定理不用新的,非要用老的
    windyboy
        119
    windyboy  
       Jul 12, 2022
    @coetzee 口口声声别人曲解,这是什么?
    我提到 JCP 了?
    Java 现状就是做不了底层,做不了操作系统,有意见?
    coetzee
        120
    coetzee  
       Jul 12, 2022
    鸡同鸭讲,还有人在用老板心态讨论,你不想看别看,你自己忙就忙代码,上论坛干嘛,上论坛不就是吹水讨论吗?
    用你爱用的老板的话讲:写完代码了吗?在这上论坛!
    coetzee
        121
    coetzee  
       Jul 12, 2022
    @windyboy 没意见,谁说 Java 做操作系统的事儿了?
    aheadlead
        122
    aheadlead  
       Jul 12, 2022
    有没有一种可能,那些老旧的 API 并不是制约你手上项目发展的瓶颈?
    coetzee
        123
    coetzee  
       Jul 12, 2022
    大家在聊语言特性,你跟我说操作系统,Java 写操作系统,另外,底层也是有定义的,如何定义底层。语言和底层混到一起来说?
    UIXX
        124
    UIXX  
       Jul 12, 2022   ❤️ 22
    我用 Java 少,用 C/C++比较多,不过胜在时间长,也算是个资深 C 工。

    实话就是 C++14 往后的高级特性真的没怎么专门学习过,个人对此是有过总结的:

    1. 年龄大了。这是最根本的原因,年龄大了意味着
    - 精力不再旺盛,续航能力变短。
    - 注意力容易被家庭、人际关系分散。
    - 记忆力变差。

    2. 对待工程的观念在转变。
    - 意识到编码在整个项目,甚至在具体的软件工程中都是很小的一环,程序员能做的事很渺小。
    - 新的特性并不能给项目带来实质提升,反而会带来额外的学习成本。而这个学习成本性价比很低。
    - 经验的积累使得一眼看去就知道哪些是语法糖,哪些是实验特性,大多数都是“纯记忆项”,确实要用到的时候翻工具书就好了。

    3. 对人的看法在转变。

    身边的人都在卷,不卷意味着落后;
    什么听起来新什么听起来好一股脑全学了;
    写代码力求最短最简洁;
    做注释 /文档 /PPT 怎么高大上怎么来。

    刚工作的时候我就是典型的“IT 愤青”,A 写的代码指针没释放,B 的模板写得不好,我都会“拉到”贴吧 CSDN 看雪引嘲以博得一波优越感。

    经过了几年的共事,我发现自己才是纯纯的小丑。有些不写注释的年轻仔正暗暗复习考研、还在用老掉牙技术的磨洋工跟我们分享他女儿的录取通知书、常常被我们嘲讽混吃等死的经理辞职回去经营自家餐厅。你说他们编码技术吧,也就那样,别指望能跟上现代 IT 发展的节奏。但同时他们好像一样过得很好。他们同时务正业,同时又不务正业,问题出在哪里?

    我想,是我的世界太小,价值观太单一。

    某人虽然在编程上面不学习,但他在你看不见的地方学习并获得提升。
    我在学习编程,他在钻研科学;
    我在学习编程,他在经营家庭;
    我在学习编程,他在创业管理;
    一叶障目,不见泰山。

    所以我对“持续在编程道路上不懈”者表示赞赏,同时因为人的复杂性,也不会轻易地对“不会使用高级语法特性”者下判断。因为那是另一种的“何不食肉糜”。
    windyboy
        125
    windyboy  
       Jul 12, 2022
    @coetzee 我还以为你用 jdk17 开发了什么 NB 的操作系统,秒天秒地秒世界
    原来知道 java 再 NB 也不过老老实实做个顶层应用罢了

    看清楚自己的地位,学个 jdk 新特性就觉得高人一等了?学个新技能就可以淘汰老的了?

    我只是告诉你,新特性要运行,都在大量依赖老技术。学了新语法就开不起老语法了?适可而止
    coetzee
        126
    coetzee  
       Jul 12, 2022
    @UIXX 说得很好,大家各有各的选择。因为大环境不同,国内做技术的大家明显考虑的事物更贴近自己的生活。
    ccppgo
        127
    ccppgo  
       Jul 12, 2022   ❤️ 1
    2021 年开始写 java 的表示。。 没有 steam , 没有 lambda , 没有 java.time 包, 可以说是差不多不会写代码了,
    coetzee
        128
    coetzee  
       Jul 12, 2022   ❤️ 4
    @windyboy 老哥,从来没有人觉得会新特性就高人一等,你想学就学,不想学就算了,但是也别教别人别学就行,你别回复我了,咱俩聊不到一起去。
    另外,您千万别敏感到别人一个特性就是新技术的境地,另外也别敏感到会了新技术就动了您什么蛋糕的境地,大家各学各的,想学就学,不想学就算,何必呢上纲上线说别人高人一等呢?更来一句淘汰别人,没人想要淘汰谁,也没有人要伤害您,别那么敏感,搞技术时间长了,多看看股票,多看看房子,生活中还有很多别的事儿,从来没有人想跟您卷,大家都是做技术的,开放包容一点,不好吗?
    另外,别回复我了,真不想跟您聊了
    yava555
        129
    yava555  
       Jul 12, 2022
    假如十年后 JDK27 出来了,不知道楼主还能不能追得动。 想当年我也追过 JDK Release Notes, Java 白皮书之类的。

    1. 花拳绣腿会了更好,不会也无妨,JDK 只是个工具,熟悉 JDK8 就足够让你写出性能卓越、可读性良好、设计优雅的作品了。
    2. 编码多年视野变得更广,时间更宝贵,研究新特性反而不那么划算了。 有这时间,宁愿去学点更基础的底层技术。
    3. 至于楼主说的开发效率,相信老程序员有一堆的经验和技巧去解决这个事情。

    另外我也不觉得用 for 循环有什么不妥的,我写代码会花很长的时间构思结构、可读性和命名。代码敲得慢一点,好让大脑追的上 : )
    coetzee
        130
    coetzee  
       Jul 12, 2022
    一个 lambda ,这么多人这么敏感,回复这么多,有点没意思了,想学就学,不想学就算了,多看看国外的知识,多看一下更先进的理念和技术总归是好的,我多加一句(如果你不想看,也不用敏感,人家看过的也不会如何您,大家都是过自己的生活,学自己的技术,不用动不动去《比》,比真的害死人了,你爽,你分享,你不爽你分享,何必非要在你会我不会,我会你不会这事儿《比》一下呢),如果非要比,比比谁更高效率,比比谁加班更少,比比谁更幸福,比这个,可以吗?
    liyhu
        131
    liyhu  
       Jul 12, 2022
    不好阅读,不喜欢
    goalidea
        132
    goalidea  
       Jul 12, 2022
    活到老,并不能学到老
    Leviathann
        133
    Leviathann  
       Jul 12, 2022
    lambda 是一个很本质的东西,也是应对并发的利器,连这个都无法理解的,很难说能设计出什么值得一提的架构
    况且八股文里喜欢扯的 concurrent hash map 大量 api 都是基于 lambda 的
    F281M6Dh8DXpD1g2
        134
    F281M6Dh8DXpD1g2  
       Jul 12, 2022
    stream 跑的更快么?
    Suddoo
        135
    Suddoo  
       Jul 12, 2022 via iPhone   ❤️ 2
    @acidsweet 当初用算盘的人也是这么想的,算盘永远不会过时

    当初八旗也是这么想的,骑马射箭比洋人的雕虫小技更“底层”,结果被人家打得满地找牙

    火车刚出来的时候,骑马的也觉得骑马更“底层”
    felixcode
        136
    felixcode  
    PRO
       Jul 12, 2022   ❤️ 4
    1.任何在我出生时已经有的科技都是稀松平常的世界未来秩序的一部分

    2.任何在我 15-35 岁之间诞生的科技都是将会改变世界的革命性产物

    3.任何在我 35 岁之后诞生的科技都是违反自然规律要遭天谴的!
    Suddoo
        137
    Suddoo  
       Jul 12, 2022 via iPhone   ❤️ 1
    本来就是新技能淘汰老技能

    但是有些“资深”程序员,占着位置,故弄玄虚,顽固不化、言必称“底层”、结果你看看这帮人除了会调几十年前的 API ,有做出东西来吗?

    这么喜欢底层,干嘛用编程语言呢、打纸带编程多好啊,掌握核心科技、永远不会过时

    低调点也就不说啥了,结果还整天在哪儿叫,资本家输送这帮人的时候、叫得比谁都厉害
    windyboy
        138
    windyboy  
       Jul 12, 2022
    我反反复复强调,程序的品质有个主要因素。
    如果引入新 jdk ,新特性对品质有提升,当然要用,但不是说用了新特性,品质就一定能提高

    我要求的品质,反而成了拒绝学习新技术新知识的代表,只能一脸尴尬。

    站在 JDK 的角度,引入新特性希望 Java 程序品质提高,但也有带来新 bug 的风险。
    站在应用程序的角度,新特性就一定品质好?旧程序就一定品质差?未必
    n18255447846
        139
    n18255447846  
       Jul 12, 2022
    有算法思维的程序员一般都喜欢用 for 循环
    aguesuka
        140
    aguesuka  
       Jul 12, 2022   ❤️ 1
    @n18255447846 有那种 ADT 都不懂的人谈算法的画面感了.
    coetzee
        141
    coetzee  
       Jul 12, 2022
    @felixcode 哈哈,精辟,调皮啊~
    WIN2333
        142
    WIN2333  
       Jul 12, 2022
    @coetzee 麻烦熟读请尽量让自己的回复对人家有帮助,你在这愤青扯一堆是为了找认同感吗?不想写 Java 觉得垃圾就不写啊,喷个什么劲呢,阿里虽然是很傻逼,但你的回复明显是非常莫名其妙,前后有关联吗?请问下我可以建议你把《语文》学一下吗?
    coetzee
        143
    coetzee  
       Jul 12, 2022
    @WIN2333 阿里傻逼吗?至少我没表达阿里傻逼。你要硬这么表达,那是你的事儿,别扯我。
    愤青的是你吧,Java 垃圾么?我从来没觉得,包括 PHP 和 JavaScript ,我觉得都挺好,你的语文才有问题吧?这聊不开了,开始搞人身攻击了吗?
    coetzee
        144
    coetzee  
       Jul 12, 2022
    @WIN2333 你不想看我的消息,可以 block 我,不要动不动人身攻击别人,另外,动不动这垃圾那垃圾有意思么?
    NVDA
        145
    NVDA  
       Jul 12, 2022
    哈欠 吵了一天还没吵完 真是闲

    不过我猜回复里有大型项目一年以上工作经验的不超过 10 个
    你站平均水平
    Suddoo
        146
    Suddoo  
       Jul 12, 2022 via iPhone
    作为一个“资深”程序员、还写 Java ?那都是花拳绣腿、语法糖,哪有写汇编厉害,写汇编才是底层、永远不会过时、而且效率更高,对于 xxxx 优化得更好、在 xxxx 上比那堆语法糖效率高 1 千倍、在 xxx 场景下,Java 直接嗝屁了,还得靠我们

    我们“资深”程序员写了几十年汇编了,积累了无数的经验,现在这帮后生搞出一个 Java ,一下子把我们几十年的经验干掉了,那我们岂不是要失业?

    怎么办?就说他们是花拳绣腿、再吹一吹自己过时的经验,反正他们也没用过,有些没见过世面的肯定能唬住
    bk201
        147
    bk201  
       Jul 12, 2022
    最终编译优化后的代码一样吗?一样,那就没啥意义,怎么爽怎么来。
    TWorldIsNButThis
        148
    TWorldIsNButThis  
       Jul 12, 2022 via iPhone
    @bk201 这还真不一样不一样 lambda 编译后是 invokedynamic ,可以说是 jvm 的秘密武器
    后面几个版本甚至把字符串拼接都迁移到了这上面
    另外看编译产物也有点莫名其妙,Java 泛型最著名的就是它类型擦除的实现,那你是不是所有 list map 都用 raw 类型?
    aguesuka
        149
    aguesuka  
       Jul 12, 2022
    @bk201 那别用泛型了, 反正都一样
    xsen
        150
    xsen  
       Jul 12, 2022
    路过。就干看热闹,大家努力
    Joker123456789
        151
    Joker123456789  
       Jul 12, 2022   ❤️ 1
    Lambda 的问题,道理很简单,因为差别真的不大,多了几个字符而已,而且如果是复杂逻辑,我相信你也不敢用 Lambda ,肯定是老老实实去建一个新的实现类了。

    stream 的问题,谁会在内存里 操作大量的数据? 我敢说大部分人 连在内存里操作集合 都不一定需要。但是话又说回来了,需要做这些事的人,眼睛也不瞎吧? 他们能看出来 stream 的方便。

    time 包的问题,跟 stream 一样,有需要的时候自然就用了,没人会舍近取远。

    你是不是看了太多老项目的代码,质疑他们为什么不知道改一下? 如果是这样的,你应该去问你团队里的人,而不是来这吐槽广大开发者。

    如果你只是来秀的,那你成功了。
    zek
        152
    zek  
       Jul 12, 2022
    Lambda 可读性太差
    xsqfjys
        153
    xsqfjys  
       Jul 12, 2022
    能保持持续学习新东西的人才是少数捏
    jinweijie
        154
    jinweijie  
       Jul 12, 2022
    来写 C#,这些都是玩剩下的
    Coelacanthus
        155
    Coelacanthus  
       Jul 12, 2022 via Android
    Java 还是好的,你要不要看看隔壁 C++
    z1113456051
        156
    z1113456051  
       Jul 12, 2022
    就时间相关的代码,项目里有的话,最好跟着写。
    lakehylia
        157
    lakehylia  
       Jul 12, 2022
    说到底,领工资的,都是面向 KPI 编程。一般 jdk 版本在项目开始的时候就已经确定了。。。升级版本只有确实性能提升能给老板带来收益才回去做
    F281M6Dh8DXpD1g2
        158
    F281M6Dh8DXpD1g2  
       Jul 12, 2022
    楼主是觉得这个快
    public boolean test1(Params p) {
    return p.a.stream().anyMatch(i -> Objects.equals(i,p.check));
    }
    还是这个快
    public boolean test2(Params p) {
    boolean b = false;
    for ( Integer i:p.a) {
    if (Objects.equals(i, p.check)) {
    return true;
    }
    }
    return b;
    }
    aguesuka
        159
    aguesuka  
       Jul 12, 2022
    @liprais 多线程最快, 你改改试试
    F281M6Dh8DXpD1g2
        160
    F281M6Dh8DXpD1g2  
       Jul 12, 2022
    @aguesuka 多用 cpu 多花钱
    ffkjjj
        161
    ffkjjj  
       Jul 12, 2022 via iPhone
    楼上还有人 steam 的😂. 我会用 stream, 但感觉 stream 写起来辣眼睛.
    zhazi
        162
    zhazi  
       Jul 12, 2022
    倒立搬砖很叼吗
    voidmnwzp
        163
    voidmnwzp  
       Jul 12, 2022 via iPhone
    还不是因为 jdk 1.8 之前堆了这么多狗屎时间类,要真狠点干脆直接移除所有乱七八糟的时间类库 重新统一设计下
    Dockerfile
        164
    Dockerfile  
       Jul 12, 2022
    @liprais 草,我一直在用 stream ,能用就用,竟然不知道有这个方法
    auh
        165
    auh  
       Jul 12, 2022
    趁年轻,多折腾点技术。后面有两条路。一条是,你会和他们一样,一条是你真的超神了。
    你自己选。别再这里浪费时间。
    FrankAdler
        166
    FrankAdler  
       Jul 12, 2022 via iPhone
    一帮人天天吵着不好用嫌麻烦,有人做了新功能,一帮人用上了,一帮人觉得语法陌生不想学批判看不懂会了又怎样
    godfray
        167
    godfray  
       Jul 12, 2022
    stream 和 lambda 用起来还是很爽的,可是公司数据库是 DB2 ,并不支持 LocalDateTime 的样子,碰到要做时区转换,用 Calendar 是真的会谢
    Asimov01
        168
    Asimov01  
       Jul 12, 2022
    我单方面宣布,#124 楼的大哥终结此话题。

    你们不要再打了.gif
    Bingchunmoli
        169
    Bingchunmoli  
       Jul 13, 2022
    1. date 类比较方便,熟悉,time 包下的需要面向百度
    2. dateUtil 有现成的类库
    3. 支持 time 需要一些变动以类库支持,
    例如 ObjectMapper
    om.registerModule(new Jdk8Module())
    .registerModule(new JavaTimeModule())
    .registerModule(new ParameterNamesModule());
    详见
    https://github.com/BingChunMoLi/quick/blob/master/moli-quick-redis-spring-boot-starter/src/main/java/com/bingchunmoli/autoconfigure/redis/config/RedisSerializerAutoConfiguration.java
    4. 大多数业务无跨时区需求,然而 time 包下的需要传入系统时区,对于不熟悉的来说增加了不确定性(某运维未设置时区导致问题,谁的责任)
    5. stream 我不反对 我觉得挺好,除了 debug 要麻烦点,写好之后以及熟练后的可读性较好(leader 说我可读性差,我只是个菜鸡,用了最多的 list 对象用 id 做 map key 转换)
    somersames
        170
    somersames  
       Jul 13, 2022
    我周围确实也有不少 80 后程序员不懂 Stream 、不懂函数式编程、不懂响应式,但是这并不妨碍他们的生活。
    他们那一拨人或多或少,在大城市都有了自己的归属,每天上下班开车,偶尔讨论下股票和基金,周末带娃到处逛逛。年纪大了也不和我们卷了。
    现在自己也工作几年了,技术更新迭代的速度太快了,也认清自己不是一直搞技术的料,说不定我现在的代码以后也会被后浪喷,所以也慢慢佛系了。

    如果自己喜欢技术,就多找同类人沟通就行了,对待他们没必要一直吐槽,毕竟他们大多数有房有车有生活,也挺让我羡慕的。
    ccppgo
        171
    ccppgo  
       Jul 13, 2022
    @godfray 这些应该是有 orm 库适配器转换吧,加个配置, 价格注解啥的,
    sjzjams
        172
    sjzjams  
       Jul 13, 2022
    资深程序员 不是会与不会,而是用和不用
    NeoZephyr
        173
    NeoZephyr  
       Jul 13, 2022
    虽然我觉得 scala 里面的各种 map filter 很好用,但是很讨厌 java 里面的 stream
    NeoZephyr
        174
    NeoZephyr  
       Jul 13, 2022
    @statumer 我发现 stream 不太好 break 跳出来
    twofox
        175
    twofox  
       Jul 13, 2022
    @nothingistrue Stream API 可读性不是更差么?
    zr8657
        176
    zr8657  
       Jul 13, 2022
    我认为对普通程序员来说学习的内容是有价值阶梯的。

    年轻时学代码可以加工资,中年时有了一定的财产和人脉,这时候学代码的提升对个人和家庭来说不划算。
    qwerthhusn
        177
    qwerthhusn  
    OP
       Jul 13, 2022
    @twofox allMatch anyMatch filter dropWhile takeWhile findFirst findAny
    qwerthhusn
        178
    qwerthhusn  
    OP
       Jul 13, 2022
    @zr8657 你认为可读性更差说明你不熟悉这玩意,当你熟悉之后你会发现比那种层层嵌套的 for 循环要更易懂
    qluuu
        179
    qluuu  
       Jul 13, 2022
    时间类倒是早就替换了。属实好用但是推行到团队下去是真的困难
    Stendan
        180
    Stendan  
       Jul 13, 2022
    我现在也用 forr 啊?有时候 forr 速度不比所谓的 stream 差,遇到有的爱用 stream().parallel()跟我说为啥变得更慢了,我寻思你真的了解了 parallel 还是纯粹瞎用-,-
    aguesuka
        181
    aguesuka  
       Jul 13, 2022
    日子人收收味, 学习降低心智负担的特性是节约生命, 和你最喜欢的岁月静好不冲突.
    事实上如果像我这样有一份闲地发慌的工作, 你会发现把代码写好, 或者说创建一个美丽的事物其实是人类的第一性需求.
    ygcaohan0
        182
    ygcaohan0  
       Jul 13, 2022
    代码过于简介,可读性会变差吧
    WIN2333
        183
    WIN2333  
       Jul 13, 2022
    @Stendan 哈哈哈哈有的人不知道上下文切换的代价,瞎用 parallel ,真是服了,学点花拳绣腿就开始了
    zhuangzhuang1988
        184
    zhuangzhuang1988  
       Jul 13, 2022 via Android
    @Stendan
    @WIN2333
    @qwerthhusn
    并行讨论 effective java 有谨慎使用

    关于可读性的 effective java 也有 有时候 stream 真不如 for 不能无脑 stream 更不要说 java 的 stream 比 c# scala 设计得要差点意思(也可能是为了兼容)
    twofox
        185
    twofox  
       Jul 14, 2022
    @qwerthhusn 不敢苟同,里面还会放着各种 lambda ,双冒号双括号,filter ,Collectors 等
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2554 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 185ms · UTC 11:30 · PVG 19:30 · LAX 04:30 · JFK 07:30
    ♥ Do have faith in what you're doing.