JDK1.8的foreach循环效率不如for循环,它为什么还要出现???
文天大人 2016-05-04 06:14:23 各位大神好,小弟今天测试了一下JDK8中的foreach和传统的泛型foreach循环,本以为他俩会差不多,结果是JDK8的foreach远远不如以前的泛型foreach循环,那么它为什么还要出现??测试代码很简单
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
for(int i=0;i<100000;i++){
list.add("a");
}
long a=System.currentTimeMillis();
for(String action:list){
if(action==null){
//什么都不干,就判断一下而已
}
}
long b=System.currentTimeMillis();
System.out.println(b-a);//传统的foreach时间1
list.forEach(action->{
if(action==null){
//什么都不干,就判断一下而已
};
});
long c=System.currentTimeMillis();
System.out.println(c-b);//JDK8的时间2
}
控制台打印的时间,JDK8耗时是传统foreach的好几十倍,求大神解释