Java循环方式对比:增强型for循环、传统for循环和Lambda表达式for循环

这篇具有很好参考价值的文章主要介绍了Java循环方式对比:增强型for循环、传统for循环和Lambda表达式for循环。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导语:

在Java编程中,循环是一种重要的控制结构,用于迭代遍历集合或数组。Java提供了多种循环方式,其中包括增强型for循环、传统for循环和Lambda表达式for循环。本篇博客将对这三种循环方式进行对比,探讨它们的语法、特性和适用场景,帮助读者在不同情况下选择最合适的循环方式。

## 增强型for循环

增强型for循环,也称为foreach循环,是一种简化版的循环语法。它可以用于遍历数组或实现了Iterable接口的集合类。以下是增强型for循环的特点:

语法简洁:增强型for循环使用形式为for (元素类型 元素变量 : 集合或数组)的语法,使代码更易读和编写。
只读访问:在每次迭代中,增强型for循环提供对当前元素的只读访问权限,不能直接修改元素的值。
例如:

List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");

for (String s : list) {
    System.out.println(s);  // 读取元素的值是允许的
    // s = "New Value";  // 尝试修改元素的值会导致编译错误
}

适用对象:适用于数组或实现了Iterable接口的集合类。

示例代码: 
List<String> list = Arrays.asList("Apple", "Banana", "Orange");
for (String fruit : list) {
    System.out.println(fruit);
}

传统for循环
传统的for循环是一种经典的循环结构,在Java中广泛使用。以下是传统for循环的特点:

灵活控制:传统for循环使用形式为for (初始化表达式; 终止条件; 步进表达式)的语法,可以手动控制循环的索引,并根据需要执行自定义操作。
索引访问:传统for循环通过索引访问集合或数组中的元素,可以直接读取和修改元素的值。

例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

for (int i = 0; i < numbers.size(); i++) {
    System.out.println(numbers.get(i));  // 读取元素的属性值或执行操作是允许的
    numbers.set(i, 10);  // 直接修改元素的值是允许的
}

底层操作:相比增强型for循环,传统for循环提供了更底层的操作,更加灵活,但也更加繁琐。
适用对象:适用于任何实现了Iterable或Iterator接口的集合类。
示例代码:

int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

Lambda表达式for循环

Lambda表达式是Java 8引入的一种函数式编程特性,它可以用于简化代码和实现函数式接口。在循环中,Lambda表达式可以与传统的for循环结合使用,提供更加简洁的语法。以下是Lambda表达式for循环的特点:

函数式风格:Lambda表达式for循环采用函数式编程风格,通过Lambda表达式定义循环体的操作,使代码更加简洁和易读。
自动迭代:与增强型for循环类似,Lambda表达式for循环自动迭代集合或数组中的元素,无需手动控制索引。
外部访问:Lambda表达式可以访问循环外部的局部变量,无需声明为final,但变量在Lambda表达式中需要是隐性final(即不可修改)。
例如:

int count = 0;
numbers.forEach(num -> {
    count++;  // 尝试重新赋值外部变量count,会导致编译错误
});

并行操作:通过使用parallelStream()方法,Lambda表达式for循环可以实现集合或数组的并行操作,提高程序的性能。
示例代码:

List<String> list = Arrays.asList("Apple", "Banana", "Orange");
list.forEach(fruit -> System.out.println(fruit));

适用场景的选择
选择合适的循环方式取决于具体的需求和操作。以下是一些建议的使用场景:

增强型for循环:适用于简单的遍历和只读操作,不需要修改集合或数组的元素。
传统for循环:适用于需要手动控制索引、执行自定义操作或修改集合或数组元素值的场景。
Lambda表达式for循环:适用于函数式编程风格,简化代码,并且无需手动控制索引的场景。
根据具体的需求,我们可以灵活选择不同的循环方式,以实现代码的简洁、可读性和性能的平衡。

结语:

在本篇博客中,我们对Java中的三种循环方式进行了对比:增强型for循环、传统for循环和Lambda表达式for循环。
for循环可以更改对象值,灵活性更高
增强for循环只可以遍历,而不能更改对象值
lambda foreach循环不可以更改对象值,且不能更改外部变量值(因为隐式 final)文章来源地址https://www.toymoban.com/news/detail-450718.html

到了这里,关于Java循环方式对比:增强型for循环、传统for循环和Lambda表达式for循环的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TD-W89841N增强型无线路由器怎么设置宽带自动拨号上网?

    在设置宽带自动拨号上网前,我们需要了解无线路由器后端的端口起到什么作用。无线猫兼路由器后面的端口可以分为:【1】ADSL端口;【2】小区宽带LAN/WAN端口;【3】电脑连接端口;(LAN1至LAN4:在使用的是ADSL端口下并且未开启IPTV功能时。)【4】IPTV端口即LAN2(需开启IPT

    2024年02月08日
    浏览(38)
  • FQPF27P06 P沟道增强型MOS管电压、原理、导通条件!

    关于P沟道增强型功率MOSFET? P沟道增强型功率MOSFET是一种常见的功率场效应晶体管,它主要用于功率放大和开关电路。与N沟道增强型MOSFET相比,P沟道增强型MOSFET的工作原理相反。 在P沟道增强型MOSFET中,沟道区域是由P型材料形成的。当施加正电压到晶体管栅极上时,电场会

    2024年02月11日
    浏览(29)
  • MOS管工作区间及开通过程分析——以N沟道增强型MOS为例

    N沟道增强型MOS管的结构如图1所示,P型衬底上制作两个高掺杂的N区,引出作为漏极D和源极S,衬底上再制作一块绝缘层,绝缘层上在制作一层金属电极,引出作为栅极G,即构成了常见的N沟道增强型MOS管。一般而言,衬底B和S极会连在一起,当在栅极处加正电压时,靠近衬底的

    2024年02月09日
    浏览(28)
  • java 增强for循环

    学的不是技术,更是梦想!!!

    2024年02月14日
    浏览(23)
  • for循环内线程池并发执行任务,等到子线程全部处理完任务,主线程在执行java的实现方式

    for循环内线程池并发执行任务,等到子线程全部处理完任务,主线程在执行 方式一 使用 CountDownLatch 在 Java 中,您可以使用 CountDownLatch 来实现主线程等待子线程执行完成的功能。CountDownLatch 是一个同步工具类,它允许一个或多个线程等待其他线程完成操作后再继续执行。 具

    2024年02月11日
    浏览(31)
  • 【Python】列表 List ⑦ ( 列表遍历 | 使用 while 循环遍历列表 | 使用 for 循环遍历列表 | while 循环 与 for 循环对比 )

    将 列表 容器 中的数据元素 , 依次逐个取出进行处理的操作 , 称为 列表的遍历 ; 使用 while 循环 遍历 列表容器 : 元素访问方式 : 使用 下标索引 访问 列表中的元素 ; 循环控制 : 循环控制变量 : 用于指示当前循环的 下标索引 ; 循环条件 : 设置为 循环控制变量 ( 下标索引 ) 列表

    2024年02月06日
    浏览(44)
  • 【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

    LTMNet这篇文章借鉴了CLAHE算法,所有步骤与CLAHE一致,不同之处在于LTMNet中局部映射曲线是通过CNN预测得到,而CLAHE中是通过直方图均衡化而得。关于CLAHE,【数字图像处理】直方图均衡化这篇博客有简单介绍。 论文:Learning Tone Curves for Local Image Enhancement 代码:https://github.co

    2023年04月23日
    浏览(36)
  • Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

    传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。 只需要在Service实现类中直接调用Mybatis Plus的方法即可进行操作。 return PageSanitationCompanyStaff类型可以得到数据的总数,你也可以通过.getRecords()方式获取List集合 这样子,我们就

    2024年02月12日
    浏览(45)
  • 常见的for循环优化方式

    ? 前言 经常使用一些循环,进行耗时计算的操作,特别是 for 循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当,将大大提高效率,下面总结几条 for 循环的常见优化方式。 首先初始化一个集合 list,如下: 优点:较常见,易于理解 缺点:每

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包