Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较?相关的知识,希望对你有一定的参考价值。

个人理解不喜勿喷。
简单的来说其实三种并没有什么太大的区别,一般情况下的性能也差不多。
for循环:
优点:可以直接获取下标,能更精确的定位。下标变量属于循环内变量,循环结束会自动回收。下标变量的步长可以自定,比较灵活。
缺点:需要根据下标才会获取循环内容。只能循环有序集合和数组,如Set和Map就无法遍历。

增强for:
优点:循环直接进行赋值,直接得到循环对象,不需要通过下标获取。可以遍历所有集合类型和数组。

缺点:循环有序集合时无法定位下标,需要在循环外层定义下标。无法遍历Map类型。

lambda:
优点:可以对所有集合类型和Map进行循环,特别是支持对Map进行循环,循环也是直接进行赋值,直接得到循环对象。

缺点:循环有序集合时无法定位下标,无法遍历数组,因为理论上来说他是属于迭代器的一种。同时因为循环体属于一个封闭范围的线程,在循环体内使用部分循环体外的变量需要加final关键字,很不方便。
另外说到了迭代器,可以参考lambda,不过写法就没lmbda那么方便了,不过迭代器有很多功能是循环比不上的,可以去看看。
参考技术A foreach 是Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发, 参考技术B 1. 不清楚你说的list总的值指的是什么?...lambda的foreach就会高效;反之这5261两个集合如果相互关联

Java 增强 for 循环

Java 增强 for 循环

Java5 引入了一种主要用于数组的增强型 for 循环。

Java 增强 for 循环语法格式如下:

for(声明语句 : 表达式) { //代码句子 }

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

实例

Test.java 文件代码:

public class Test { public static void main(String args[]){ int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ){ System.out.print( x ); System.out.print(","); } System.out.print("\n"); String [] names ={"James", "Larry", "Tom", "Lacy"}; for( String name : names ) { System.out.print( name ); System.out.print(","); } } }

以上实例编译运行结果如下:

10,20,30,40,50,
James,Larry,Tom,Lacy,

以上是关于Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较?的主要内容,如果未能解决你的问题,请参考以下文章

java 增强for循环为啥输出的是一串地址值?

Java中的增强for循环怎么用?for()中的参数是啥意思

java中使用增强型的for循环有啥好处?

java增强for循环的语法结构

java基础40 增强for循环(也叫foreach循环)

Java 增强 for 循环