Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        3年前关闭。
                    
                
        

我做了一些PoC来比较两种类型的实现交互列表的性能。

第一个是使用纯Java,使用foreach并使用'if'检查每个元素。

第二种方法是这样使用lambda

int max1 =  lists1.stream()
                  .mapToInt(i -> i)
                  .max()
                  .getAsInt();

long finalCount = lists1.stream()
                        .filter(p -> p.intValue() == max1)
                        .count();


显然,使用lambda比使用经典Java foreach快5倍。

我对在我的当前项目中强制在团队中使用lambda(例如,禁止使用经典java foreach的规则)感到非常有信心。

我的问题是,是否存在无法应用此规则的情况(需要使用lambda),我的意思是,如果存在无法使用lambda处理集合的异常。

最佳答案

绝对的第一件事-对Java代码进行基准测试是complicated
含义:除非您已经遵循了先前的链接中概述的规则,否则您的测量是虚假的机会很高。

除此之外:lambda确实使用了invokedynamic字节码指令,这反过来又可以提高性能。

但这绝不支持对整个团队实施这样的政策。

真正的答案是:教育您的团队有关流和lambda的利弊。使他们能够在何时以及如何利用这些概念方面做出明智的决定。确保人们了解自己在做什么,而不是给他们提供要遵循的命令的清单。

09-10 03:24
查看更多