不少资深人士写代码的时候还是各种 for 循环。
Lambda 也不用,还用各种匿名内部类。
还有 JDK8 的时期时间库,很多人还是在用 Date ,Calender 。现在的 LocalDate, LocalDateTime, YearMonth, ZonedDateTime 做时间计算真的特别直观简单,但是他们就喜欢用 Date ,简单的计算就用毫秒加减,复杂点的计算就先换成 Calender ,完事后再转换回 Date 。
甚至 JDK7 的 try-with-resources 语法我都感觉不少人都不知道。
所以,现在“JDK8 是主流”这句话是不对的,而是“JVM8 是主流”才是对的。语法的主流应该是 J2SE 1.5 。
|      1wxlwsy      2022-07-11 14:37:01 +08:00 用 java8 几年多了,用 time 包的次数只有当初学习的时候写过几句,实际上时间操作都是现成的基于旧 api 的工具类,几乎没有重新写个 time 的工具的需求啊. | 
|      2nothingistrue      2022-07-11 14:39:04 +08:00 很多人不会,不代表不主流。JVM8 也不是主流,不管是 Eclipse 还是 Idea ,老早就强制升级 JVM 了,所以至少 IDE 端,已经早就不在 JVM 8 跑了。 | 
|      3nothingistrue      2022-07-11 14:40:32 +08:00 Spring 6 / Spring Boot 3 要以 JDK 17 为基准版本了,这回 JDK 8 终于要到头了。 | 
|      4Cmdhelp      2022-07-11 14:42:31 +08:00 会了能怎么样 | 
|  |      5lululau      2022-07-11 14:45:31 +08:00  2 某些资深程序员会说,用 stream API 写的代码可读性太差 😂 | 
|  |      6chendy      2022-07-11 14:45:56 +08:00 不会也不耽误啥,人家写代码就是个工作,能实现业务需求就行,没有什么别的追求 再说 Java8 时间 api 都是不可变对象,让他们用也未必能用明白不是么…… 除非公司或者团队有这方面的要求,否则就做好自己就好,别人怎么样就怎么样吧 | 
|  |      7jaoyina      2022-07-11 14:45:56 +08:00 为什么呢? | 
|      8Leviathann      2022-07-11 14:47:38 +08:00 SpringBoot2 的非商业维护时间好像不会很长 | 
|      9bytesmith      2022-07-11 14:47:53 +08:00 太正常了,自己尽量用就行,别人感觉管不了- - | 
|  |      10cheng6563      2022-07-11 14:48:11 +08:00  1 java.time 并没有 DateUtils 或者 joda-time 好用 | 
|  |      11hidemyself      2022-07-11 14:49:18 +08:00  12 我都会,但是不妨碍我最低的职级,最少的工资 | 
|      12statumer      2022-07-11 14:52:58 +08:00 via iPhone  19 有没有一种可能,for 循环对 JIT 编译器来说更好优化,更好调试,更好维护?而 Java stream API 主要是满足一些函数式爱好者对 List monad 的热爱? | 
|  |      13marcong95      2022-07-11 15:07:51 +08:00 迫于并不主要用 Java ,偶然用一用 Java 的时候 Stream API 总想不起来。还是 JS 、Python 、LINQ 的比较愉快~~ | 
|      14zhangchongjie      2022-07-11 15:10:25 +08:00 @statumer 满足其他语法来学 java 的装逼心理,现在各种语法糖 。找错,调试都比较麻烦 | 
|  |      15pengtdyd      2022-07-11 15:18:42 +08:00 35 岁淘汰就搁着来的 | 
|      16yeyang5211      2022-07-11 15:22:58 +08:00  1 @lululau 哈哈 我就这么说,  后来会 steamAPI 之后就想着管你谁来维护  我先写这爽再说 | 
|  |      17besscroft      2022-07-11 15:23:48 +08:00 我都会,但不妨碍我工资低还没人要。 | 
|  |      18MoYi123      2022-07-11 15:30:36 +08:00 不会 java, 学习 stream 难度很高吗? 为什么很多 javaer 以自己会 stream 为荣? | 
|      19Leviathann      2022-07-11 15:33:12 +08:00 @MoYi123 因为还有很多真的不会还喜欢找理由 另外 collect 的部分复杂起来的确有些麻烦,这是 api 设计的问题 | 
|  |      20string2020      2022-07-11 15:38:53 +08:00 一个臭做工程的天天嚷嚷自己的工具如何先进是闹哪样 | 
|  |      21Kiske      2022-07-11 15:41:48 +08:00  1 我表示同意, 而且这样的员工比各位想象中还多, 甚至我自己就是,对 JDK8 以上的特性一概不用,  个人角度来看, 这算是学习知识上的停滞, 函数式 声明式编程好用, 但没那能力用. 生态环境上, 各位认为现在跑着的 JDK 1.5-1.7 的项目到底还有多少, 我认为在很多看不见的地方, 无法被统计的地方,还有大量的老旧系统, 这样的项目太多,直接导致外界很多人对整个 Java 生态圈产生了腐朽,臃肿.效率低的印象. | 
|  |      22vfs      2022-07-11 15:43:00 +08:00  1 如果以会不会编程语言的高级特性来判断一个程序员的水平,那未免有些草率啊。 我称得上是老古董了,从来不适用高级特性,就是使用最简单的 while ,for ,if. 因此,我无论 写 java ,还是 c++,感觉都一样。 | 
|  |      230x663      2022-07-11 15:45:15 +08:00 是,到现在我都不会茴字的四种写法 | 
|      24nothingistrue      2022-07-11 15:45:40 +08:00  4 | 
|  |      25DonaidTrump      2022-07-11 15:49:07 +08:00 什么都不会,凭什么被称作资深人士? | 
|  |      26Akitora      2022-07-11 15:58:09 +08:00 time 包真心好用 | 
|  |      27siweipancc      2022-07-11 16:01:15 +08:00 via iPhone  1 良好的代码设计才是关键,一大堆循环,递归,无用的大量实例创建,用 jdk17 都救不来。 但是高版本的编译器有更好的优化又是个事实,op 不过是太激进了。 我负责的项目升到 13 又降回来 8 ,第三方库不支持,全是泪,幸好升级那会只用了几个特性 | 
|  |      28lujiaosama      2022-07-11 16:02:40 +08:00 真正的老玩具都是各种语法糖用得飞起的,  代码简练高效, 新手读起来有门槛但是读懂了就能感受到优雅.  哪天 review 看不懂刚毕业出来的新人写的代码那就闹大笑话了. 而且写习惯了声明式之后回头看命令式代码真的感觉又臭又长. | 
|  |      29pocketz      2022-07-11 16:11:42 +08:00 java.time 真的很好用。。。 | 
|      30zmal      2022-07-11 16:14:08 +08:00 日经贴,会不会 stream 不能作为代码水平的判断工具,用 stream 写烂代码的人比比皆是。建议上 code 。 | 
|  |      31leaves615      2022-07-11 16:31:50 +08:00 能解决问题的代码都是好代码。 | 
|      32Suddoo      2022-07-11 16:41:59 +08:00 via iPhone  2 是啊、所以、这些所谓的“资深”程序员也就那么回事儿而已 都 Java18 了、很多东西早变了、JDK 也加入了大量新特性,但是“资深”程序员还是会用自己过时的经验来考新人: new String 创建了几个对象 JVM 如何“调优” 手写几个设计模式 …… 写代码的时候还是又臭又长的旧 API ,一行代码就能读取文件,非要几十行写完,显得自己严谨,问就是要懂“底层” lambda 不用,还是一堆匿名内部类,问就是语法糖、没意义、“底层”重要,lambda 都特么 10 年前的玩意儿了 | 
|      33hs444      2022-07-11 17:02:42 +08:00 stream 和 lambda 一开始只是了解,工作中也不用,后来开始用 idea 之后活生生被 idea 教会了。 时间相关的操作都是直接用外部工具类。 try-with-resources 确实方便,一直在用。 | 
|  |      34hhjswf      2022-07-11 17:23:29 +08:00 localdatetime 相比 date 好在哪 | 
|  |      36coetzee      2022-07-11 17:33:59 +08:00  1 对于大部分 Java 的人,被人家别的语言骂我觉得是没毛病的,你命名 Java17 可以做到很大简洁性提升,但是非要沿用老的一套,你问问他,裹脚布香不香?理由和借口贼多,其实都是放弃学习、放弃进步的表现,大部分面试只要问到八股文的,不用考虑是技术型工作,就是写业务,而且技术老旧 | 
|      37ql562482472      2022-07-11 17:34:01 +08:00 stream 不会、java.time 不会的,确实很讨厌,简单逻辑往往写一大堆  最后一看新 API 一句话就讲明白的事情 | 
|      38levon      2022-07-11 17:37:18 +08:00 stream 做循环确实代码比较丑 | 
|      40gabon      2022-07-11 18:17:54 +08:00 via iPhone  5 stream api 可读性更高 | 
|      41sampeng      2022-07-11 18:23:38 +08:00 | 
|      42sampeng      2022-07-11 18:25:17 +08:00 说 stream api 可读性更高的是熟悉 stream api 的可读性更高。不熟悉的就是看天书。 for while 怎么了。。这还能有原罪了? | 
|  |      43zhuangzhuang1988      2022-07-11 18:31:23 +08:00 会又能咋样,能写个类似 lucene 么,或者 h2 么 这些可是在 jdk8 之前就出来了 | 
|  |      44zhuangzhuang1988      2022-07-11 18:33:44 +08:00 @sampeng 对的<effective java>上就有讨论, 第 45 条:谨慎使用 Stream 159 第 46 条:优先选择 Stream 中无副作用的函数 164 第 47 条:Stream 要优先用 Collection 作为返回类型 168 第 48 条:谨慎使用 Stream 并行 172 有的时候 stream 写出来的真是天书 https://book.douban.com/subject/30412517/ | 
|      45dcsuibian      2022-07-11 18:35:31 +08:00 1 、Lambda 是肯定要用的,要不然多麻烦 2 、时间的我也喜欢用时间戳计算然后转成 Instant (时间段长度固定,与时区无关的情况下)。其它几个用的比较少,数据库里存的和返回给前端的都是毫秒时间戳,交给前端去格式化。但 Date 、Calendar 肯定不用。 3 、try-with-resources 会用,但用的不多。因为如果你调用的方法会抛出检查型异常的话,那么放在开头的括号里的很麻烦。(我倾向于方法生命无 throws ) 4 、stream api 用的挺多的,但 for 也在用。 因为 stream 中间有个函数会抛出检查型异常的话,处理也比较麻烦,不优雅。或者只是 steam api 用得太多了。 只考虑 LTS 版 Java ,现在开新项目已经可以直接上 Java 11 了。 那乐观估计,2025 年至少得开始学 Java 17 了。 顺便问一下,学新版本是只看新的部分还是直接重学当复习比较好呢? | 
|      46wfd0807      2022-07-11 18:40:51 +08:00  1 说 stream 可读性高应该是用于简单场景,数据逻辑复杂聚合操作,代码格式化都是个问题,就不用说可读性 stream 可以简化一些简单的循环、归集操作,真没有必要上纲上线 如何能用最快的方式达到目的才是值得关注的问题 | 
|      47lixintcwdsg      2022-07-11 18:46:06 +08:00 主要这些细节提升不了多少生产力。 一般来说一个项目,编码可能就占 15%,大头在前期预研,项目价值,架构设计,项目管理沟通等等上面(大公司) 编码一些新特性生产力提高 15%,对于整个项目就是 2.25%的提高 | 
|  |      48kett      2022-07-11 19:19:07 +08:00 你觉得是那就是吧 | 
|  |      49adoal      2022-07-11 19:37:40 +08:00 via iPhone 也许人家在 stream 流行之前就已经修齐治平迎娶白富美了 | 
|      50lawler      2022-07-11 19:45:08 +08:00  3 年轻人没有写过复杂功能时的意淫罢了了,就像 c 看不上 java 一样,c 在尽善尽美。 之所尽可能的减少使用 stream 是因为某一天,我需要从一个 list 中计算多个维度的数据。 我发现循环过滤分组再过滤取属性计算 sum/avg/cont 后代码很屎。 从此,凡是需要 stream 处理时,我会优先考虑我需要几个 stream 。超过两次就直接 for 了。 至于 lambda ,再设计了大量单一方法的接口后,发现也很鸡肋。只是为了使用 lambda 而设计,但却定义了大量的单接口方法,一单出现补充接口方法,就有各种问题。从此只在 jdk 中使用,不再在自己定义可以使用 lambda 的接口。 不可避免的,当涉及复杂系统应用的时候,这些语法糖没有任何意义。 你看 spring 源码,有大范围在使用这些特性么? | 
|  |      51wenbinwu      2022-07-11 20:07:42 +08:00  1 别纠结语言框架,这东西只有熟练不熟练的问题 基础懂了,随便换,就是个看文档的问题 如果一个人说我一天写 10 个小时代码,那他写的代码肯定是烂的 把自己想成工程师,而不是码农,把时间花在思考上,而不是写代码上 | 
|      52securityCoding      2022-07-11 20:12:33 +08:00  1 这几个类库不会确实有点离谱了 | 
|  |      53ddonano      2022-07-11 20:13:20 +08:00 jdk 11 和 17 有啥新特性,只会用 jdk8 | 
|  |      54ElegantOfKing      2022-07-11 20:21:34 +08:00 我专门学过这些东西,项目中也多多少少会用到相关的特性。 但是,但是哈,一旦遇到复杂的逻辑,我就大概率不用,或者用了,但是做很多注释。 实在是有些特性太抽象,对于后面维护的人来说,是个累赘。 | 
|  |      55felixcode      2022-07-11 20:34:48 +08:00 新版本新功能绝对是不稳定的,刚参加工作那段时间的软件和版本都是最稳定的,年轻人不要一味的追求时髦,新功能一般都是没用的。 狗头;) | 
|      56dongcxcx      2022-07-11 20:47:54 +08:00 这个并不是什么大不了的东西,项目里如果有的话直接就用了,没有看一下也很快就会了. 所以这个不会能咋的,会了又能咋的. | 
|  |      57nutting      2022-07-11 21:11:31 +08:00 via iPhone 那些风格的代码看不惯,不像 java | 
|      58zpxshl      2022-07-11 21:39:56 +08:00 via Android 你一天的时间有多少在编码的,少写几行代码真能让你更摸鱼吗。 反正我编码时间不到 1/10 | 
|  |      59aliveyang      2022-07-11 21:48:05 +08:00 只在简单场景用过 stream | 
|  |      60xiaowangge      2022-07-11 22:16:45 +08:00 via iPhone 据说,蚂蚁金服某组是禁止使用 Lambda 的 | 
|  |      61Rocketer      2022-07-11 22:20:49 +08:00 via iPhone 作为一个做过 C#的程序员,我很习惯 stream 但很不喜欢 java 的 stream 。那语法比 linq 实在是难读难记很多。 | 
|  |      62Goooooos      2022-07-11 22:25:11 +08:00 via Android 资深=会各种新潮 api?? | 
|      63dqzcwxb      2022-07-11 23:05:12 +08:00 Completablefuture 还有好多连名字都不知道的 | 
|      64aguesuka      2022-07-12 00:19:43 +08:00  6 这栋楼完美诠释了为什么 Java 程序员拥有刻板, 啰嗦, 不思进取又菜的刻板印象. | 
|  |      66icyalala      2022-07-12 01:28:59 +08:00 学新东西是好事,这没问题。但实际表现并不是 "学了新东西就能开发得更快"。 是你要知道,学习也是有学习成本的。对于已经熟悉的 API 来说,使用者有"路径依赖"。就是说,即使达成一个目的的路径相对更长,但是因为使用者熟悉,他反而能更快达成目的。 | 
|      67TWorldIsNButThis      2022-07-12 02:30:21 +08:00 via iPhone 推新 api 新语法已经是比较温和且进步的了 激进且保守的直接用 go 垒💩山,不跟你 java 这帮遗老遗少玩了 你喜欢过程式老语法?我 tm 大道至简,连 class 、泛型都不想要,加了泛型就变味了,来嘛,比谁语法更少。 | 
|      68ca1123      2022-07-12 04:08:11 +08:00 管用就行, 能拔脓就是好膏药. 比如我就写不来 C 这一绺子的代码, 只能写函数式... | 
|      69dannyzjwz      2022-07-12 04:25:53 +08:00 http://16.162.252.129:81/#/ 交易所找人 wx 17795098941 | 
|  |      71silvernoo      2022-07-12 05:00:58 +08:00 我全都不会,但是会耽误我继续保持高收入吗? | 
|      72Suddoo      2022-07-12 07:43:33 +08:00 via iPhone 资本家也挺为难的,知道这些“资深”p 几真的就是个 p 了,把他们作为人才输送给社会的时候,这帮人还叫得贼厉害 | 
|      73frankies      2022-07-12 08:09:05 +08:00 via Android  1 你 20 多岁年轻追求新 api 彰显生产力没毛病,请不要用这个来作为指责码农的工具。我是 30 多的临近职场生命末期的大叔了,何尝对 coding 没有过热爱和追求,不过见过太多追求框架熟练工的年轻人之后,发现做好工具人就好了,永远记住你学的不是技术,而是技能,一个手艺活罢了。 | 
|  |      74cassyfar      2022-07-12 08:20:35 +08:00 资深程序员,表示不会 stream ,不写 lambda ,Java.time 也没用过。是不是要被优化了? | 
|      75jjwjiang      2022-07-12 08:58:39 +08:00 Java 的 stream 不用也罢,根本起不到和 C#一样的从便利性、可读性上有飞跃提升的效果 根本原因是 Java 的类型设计就很差,没有 IEnumerable 这样的基础,让 stream 做不出管道式的效果,任何操作之后都得 collect 创建新对象 至于在这贬低 lambda 本身的就很搞笑了,没写过 lambda 总写过前端吧,能说出 lambda 鸡肋? | 
|  |      76coetzee      2022-07-12 09:13:51 +08:00  5 大概扫了一下,几类人: 1:我不会,不照样好好地?不想学习,不想进步了,说啥都行,何必花时间回复帖子呢?最受不了年纪大的带节奏带风气 2:Java stream 不行啊,不如那谁谁谁?既然这样你去写别的,别在这里吹,JVM 系的 Scala 不比你吹的 C#特性更牛逼?我认为,不用追求完美,Java 在平衡历史问题和新特性之间做的还 OK ,至少比你 golang 的泛型设计强吧?更强的话你可以玩 Scala 啊,无缝对接 3:最不济的是:技能罢了?你理中客,你不是工具人?何必在这带这种节奏,一个程序员变弱就从看低自己开始,你咋不看自己看成原子运动呢?把自己看成一个熵增现象呢?把自己看成猴子呢?上帝视角用完了吗?既然这样看待技能和工具人,不如去做销售啊,IT 这行,太缺优秀的销售了~ | 
|      77zr8657      2022-07-12 09:14:49 +08:00 我已经开始撸 webflux 了 | 
|  |      79coetzee      2022-07-12 09:24:30 +08:00  6 这圈子,特别是 Java 圈,垃圾太多,垃圾声音更多,这就是很多大神转去搞新语言的原因,这种乌烟瘴气导致语言和社区氛围极差,特别是年轻人,被这种坏风气带动的毫无编程乐趣。 单纯说 Java 这么多年,一直在语言层面进步,而且进步神速,反观一些所谓的“老开发”“老 Java”,教别人做人,以自己那点项目经验就以年轻人导师自居,嘚瑟什么呢?我见过很多程序员把编程作为职业也作为爱好,结合的很好,反观你们这些。 知道别的语言看 Java 为什么总是在歧视链最底层吗?知道为什么国内 Java 氛围就是造垃圾轮子吗?就是因为风气不好,写个 lambda 这么简单的事儿,都能阴阳怪气半天,学一下咋了?花很多时间吗?真经验丰富的人不是看几眼就会了吗? 还有阿里或者蚂蚁吹,别吹了好吗,阿里和蚂蚁都尴尬了,阿里 Java 再强,能强过 Java 委员会?能强过真 Java 开发?阿里先把创新做出来再说,再创新这么多年,大家谁不知道国内的 IT 科技呢?何必尬吹? 多看看国外的趋势,多看看第一手材料,少看阿里系,有好东西,但是别被带跑偏了,阿里也是趋势的跟风者而已,springcloud 、云原生、大数据、AI ,没有一股阿里吹起来的风,所以不用太在意你心中的“神” | 
|  |      80keymao      2022-07-12 09:29:01 +08:00 语言是解决需求用的,只要 1+1 还等于 2 ,管他怎么算的干嘛。。   项目要求用 java8 就用 java8  要求用 kotlin 就用 kotlin 呗。 实在看不下去就换公司或者自己当老板,你说用啥就用啥对不对, 没必要和他们闹别扭。 | 
|      81Suddoo      2022-07-12 09:29:58 +08:00 via iPhone 这些“资深”程序员,自己低调点、别装逼,也就罢了 关键是还整天在那儿叫,什么底层、什么技术、什么你们都只懂皮毛,我们“资深”程序员是懂“底层”的 底层个屁,真的掌握核心技术、你倒是自己整个什么 DK 给全世界用啊。都是用别人的 API ,区别是新人 10 行写完的功能,“资深”程序员要写 100 行,或者干脆不写了,就吹牛逼,故弄玄虚 资本家也明白这个道理,所以把这些人输送给社会,也不是没有道理的,换谁都一样干,别人干活还快,还没那么多臭毛病 | 
|  |      82coetzee      2022-07-12 09:30:07 +08:00 还有一群在意 LTS ,你项目那么脆?会因为不是 LTS ,崩掉?人家 golang 就不玩这个。Java 基础设施,固定大版本,应用开发,我们一直跟踪最新版本来做,特别是 pattern match 这种,多好用~ 任何选择都是成本收益的权衡罢了 | 
|      83Cmdhelp      2022-07-12 09:31:32 +08:00 大多数都是拿着别人家咀嚼好的东西 混口饭吃,就不要产生盲目的自信了。 | 
|  |      84zach14c      2022-07-12 09:31:36 +08:00  1 "请尽量让自己的回复能够对别人有帮助" --> 楼主 b 站开个教学让大家受益吧  😎 | 
|      85gaifanking      2022-07-12 09:33:13 +08:00 直接换 Kotlin 得了,语法更爽,还兼容 Java. | 
|  |      86coetzee      2022-07-12 09:33:28 +08:00 真底层,不应该去研究数学吗?或者研究物理吗?再不济你研究算法或者操作系统也可以啊?何必来碰 Java 呢?你玩 JVM 理论,至少要能手写一个 JVM 吧?不然那些问别人 JVM 的,自己不羞愧吗? Java 中的这种风气特别差,明明自己不会,而且很多艰深难懂的技术,全靠背诵才能说出 12 ,非要问,热力学定律现在能记住的人有几个? 把自己用到的知识学好做好不行吗?非要装科学家? | 
|  |      87zhang77555      2022-07-12 09:34:29 +08:00 加班恒定的情况下写得更快并不会让你有更多收益,很多人编码无非是混口饭吃,写的快写的慢从事实上来讲也并不会影响他挣多少钱. 倒是总有些貌似热爱技术的沙雕喜欢跳出来对老板喊, 我可以干他三倍的活儿只要 1.5 倍工资,最终把自己卷没了,这种才是真的坏 | 
|  |      88coetzee      2022-07-12 09:36:12 +08:00 用好 Java ,配合团队的规则,按照最小能量原则来做项目,不要过早优化, 语法层,不要过多纠结“糖”这事儿,你 Java 都纠结糖,那 Ruby 这种咋办,齁死你?我觉得糖不糖的,团队如果都喜欢甜食的,直接选 Scala ,万事大吉 | 
|  |      89coetzee      2022-07-12 09:37:28 +08:00 @zhang77555 混淆概念,高效率这事儿和工贼混乱了,高效率是自己爽,工贼要搞事儿,你用 C 来写,也能搞事儿。持刀杀人,刀何必要背锅呢? | 
|  |      90wolfie      2022-07-12 09:38:44 +08:00 | 
|  |      91dragondove      2022-07-12 09:42:53 +08:00 关于简洁和性能,使用古老的 apache commons + google guava 工具包就能解决大部分 stream 能解决的问题,而且语法更简洁,性能也更强。例如 guava 的 Maps.uniqueIndex 和 Multimaps.index 我就经常用。关于时间类型,如果使用 Date 类型,大部项目也都会有个 DateUtils 之类的工具类,内部怎么实现没人管(很多时候我会选择使用 java.time 包下的工具实现),反正最后数据是正确的就行,而时间的 parse 和 format ,我更倾向于使用 commons 的 FastDateFormat ,性能更好,占用内存小,而且线程安全。 | 
|  |      92zhang77555      2022-07-12 09:44:05 +08:00 @coetzee 我的意思就是 自己爽就行了,不应该老是跳出来说别人不行,因为最终结果大概率是别人被干掉,活到你自己头上,而挣更多的人确是老板 | 
|  |      93cheng6563      2022-07-12 09:50:09 +08:00 | 
|  |      94dragondove      2022-07-12 09:50:21 +08:00  1 @wolfie enhanced-for 是使用 iterator 的,但是 forEach 的实现取决于 Iterable 是怎么实现的,例如 ArrayList 的 forEach 是 fori ,至于性能上,使用 forEach 会创建一个 Consumer 的匿名类对象,不过这个性能影响可以忽略不记。stream 里的 foreach 实现和 Collection 里的也是完全不一样的,stream 会创建新的对象来持有容器内的数据再作处理,不过 stream 可以使用 parrel 提升性能,如果直接使用,性能是不如 enhanced-for 或者 fori 的。 | 
|  |      95windyboy      2022-07-12 09:54:04 +08:00 会用什么不代表先进落后 代码可读性高,错漏少,适应性强,风格优美才是关键 用回 lambda 不代表你的代码质量就高 | 
|  |      96coetzee      2022-07-12 10:00:51 +08:00 会用什么不代表先进落后 不这样看待,我觉得会火箭比开飞机先进,开飞机,比开汽车的先进。 技术先进不能仅仅归为文学范畴。《代码可读性高,错漏少,适应性强,风格优美才是关键》文学虽然很重要,但是工程化的事儿,就是存在先进一说,不然何必电动车替换油车,工业革命也就不会有先进性了? 如果一直说什么本质论,我们是大清国吗?技术层面我认为,要做先进性的进步,其中肯定有更换一门更好地技术来做事。 至于什么语法代表先进性,那是另一个事儿。 | 
|      97SurfaceView      2022-07-12 10:02:14 +08:00 为什么要会?????? | 
|      98Leviathann      2022-07-12 10:05:47 +08:00 @wolfie  StackOverflow 上的一个回答的结论 Just as I expected stream implementation is fairly slower. JIT is able to inline all lambda stuff but doesn't produce as perfectly concise code as vanilla version. 下面是 brian goetz 本人的回复: Your conclusion about performance, while valid, is overblown . There are plenty of cases where the stream code is faster than the iterative code, largely because per-element access costs is cheaper with streams than with plain iterators. And in many cases, the streams version inlines to something that is equivalent to the hand-written version. Of course, the devil is in the details; any given bit of code might behave differently | 
|  |      99coetzee      2022-07-12 10:06:43 +08:00 为什么要写 Java ?为什么要用 Linux ?为什么要说话?为什么要发帖子?为什么要活着?问为什么的时候,不如实打实做点事,不然直接找人类终极问题答案得了:“为什么活着?” | 
|      100xloger      2022-07-12 10:14:58 +08:00 我觉得更多是习惯问题,拿 Date 来说,当年就只有这个,都用习惯了,也都有自己用顺手的 DateUtil 了,然后当看到新类时会下意识想:“这个我用 XXX 方式不是也能实现么”,然后缺乏换新的动力。 除非是那种一直很烦一直很折磨的功能。比如我很想知道实现两个类的深拷贝有什么简单方便的方式么,自己管理 clone 真的很难受很难受。有的话我就肯定去更换了。 |