当前位置: 首页 > article >正文

Java循环操作哪个快

文章目录

  • Java循环操作哪个快
    • 一、引言
    • 二、循环操作性能对比
      • 1、普通`for`循环与增强`for`循环
        • 1.1、代码示例
      • 2、`for`循环与`while`循环
        • 2.1、代码示例
      • 3、循环优化技巧
        • 3.1、代码示例
    • 三、循环操作的适用场景
    • 四、使用示例
    • 五、总结

Java循环操作哪个快

在这里插入图片描述

一、引言

在Java开发中,循环操作是常见的编程任务,但不同的循环方式在性能上存在差异。选择合适的循环结构对于优化程序性能至关重要。本文将探讨几种常见的Java循环操作的性能差异,并通过代码示例和测试结果进行分析。

二、循环操作性能对比

1、普通for循环与增强for循环

普通for循环通过索引访问集合元素,而增强for循环(for-each循环)通过迭代器实现。在性能测试中,普通for循环通常优于增强for循环,尤其是在处理大数据量时。

1.1、代码示例

java复制

// 普通for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {sum += i;
}
System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));// 增强for循环
startTime = System.currentTimeMillis();
sum = 0;
for (int i : new int[1000000000]) {sum += i;
}
System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));

2、for循环与while循环

for循环和while循环在逻辑上是等价的,但在某些情况下,for循环的性能略优于while循环,因为for循环的结构更紧凑。

2.1、代码示例

java复制

// for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {sum += i;
}
System.out.println("for循环耗时:" + (System.currentTimeMillis() - startTime));// while循环
startTime = System.currentTimeMillis();
sum = 0;
int i = 0;
while (i < 1000000000) {sum += i;i++;
}
System.out.println("while循环耗时:" + (System.currentTimeMillis() - startTime));

3、循环优化技巧

通过拆分循环操作可以提高性能。例如,将一个循环拆分为多个并行操作,可以充分利用CPU的多核优势。

3.1、代码示例

java复制

// 普通循环
long startTime = System.currentTimeMillis();
long sum = 0;
for (int i = 1; i <= 1000000000; i++) {sum += i;
}
System.out.println("普通循环耗时:" + (System.currentTimeMillis() - startTime));// 拆分循环
startTime = System.currentTimeMillis();
long sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (int i = 1; i <= 1000000000; i += 4) {sum1 += i;sum2 += i + 1;sum3 += i + 2;sum4 += i + 3;
}
System.out.println("拆分循环耗时:" + (System.currentTimeMillis() - startTime));

三、循环操作的适用场景

不同的循环操作适用于不同的场景。普通for循环适合需要精确控制迭代次数的场景,而增强for循环适合遍历集合或数组。

四、使用示例

以下是一个使用普通for循环和增强for循环的示例,展示了在不同场景下的性能差异。

java复制

import java.util.ArrayList;
import java.util.List;public class LoopExample {public static void main(String[] args) {List<Integer> list = new ArrayList<>();for (int i = 0; i < 10000000; i++) {list.add(i);}// 普通for循环long startTime = System.currentTimeMillis();int sum = 0;for (int i = 0; i < list.size(); i++) {sum += list.get(i);}System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));// 增强for循环startTime = System.currentTimeMillis();sum = 0;for (int num : list) {sum += num;}System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));}
}

五、总结

在Java中,普通for循环通常比增强for循环和while循环具有更好的性能,尤其是在处理大数据量时。通过拆分循环操作,可以进一步提高性能。开发者应根据具体的业务需求和场景选择合适的循环方式,以优化程序的性能。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Java循环操作哪个快?-阿里云开发者社区
  • 性能】【算法】for循环,性能提高_java for循环优化-CSDN博客

相关文章:

Java循环操作哪个快

文章目录 Java循环操作哪个快一、引言二、循环操作性能对比1、普通for循环与增强for循环1.1、代码示例 2、for循环与while循环2.1、代码示例 3、循环优化技巧3.1、代码示例 三、循环操作的适用场景四、使用示例五、总结 Java循环操作哪个快 一、引言 在Java开发中&#xff0c;…...

Maven jar 包下载失败问题处理

Maven jar 包下载失败问题处理 1.配置好国内的Maven源2.重新下载3. 其他问题 1.配置好国内的Maven源 打开⾃⼰的 Idea 检测 Maven 的配置是否正确&#xff0c;正确的配置如下图所示&#xff1a; 检查项⼀共有两个&#xff1a; 确认右边的两个勾已经选中&#xff0c;如果没有请…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化

1.25 视觉风暴&#xff1a;NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …...

Baklib推动数字化内容管理解决方案助力企业数字化转型

内容概要 在当今信息爆炸的时代&#xff0c;数字化内容管理成为企业提升效率和竞争力的关键。企业在面对大量数据时&#xff0c;如何高效地存储、分类与检索信息&#xff0c;直接关系到其经营的成败。数字化内容管理不仅限于简单的文档存储&#xff0c;更是整合了文档、图像、…...

读书笔记 | 《最小阻力之路》:用结构思维重塑人生愿景

一、核心理念&#xff1a;结构决定行为轨迹 橡皮筋模型&#xff1a;愿景张力的本质 书中提出&#xff1a;人类行为始终沿着"现状"与"愿景"之间的张力路径运动&#xff0c;如同橡皮筋拉伸产生的动力。 案例&#xff1a;音乐家每日练习的坚持&#xff0c;不…...

React中使用箭头函数定义事件处理程序

React中使用箭头函数定义事件处理程序 为什么使用箭头函数&#xff1f;1. 传递动态参数2. 避免闭包问题3. 确保每个方块的事件处理程序是独立的4. 代码可读性和维护性 示例代码总结 在React开发中&#xff0c;处理事件是一个常见的任务。特别是当我们需要传递动态参数时&#x…...

高阶开发基础——快速入门C++并发编程6——大作业:实现一个超级迷你的线程池

目录 实现一个无返回的线程池 完全代码实现 Reference 实现一个无返回的线程池 实现一个简单的线程池非常简单&#xff0c;我们首先聊一聊线程池的定义&#xff1a; 线程池&#xff08;Thread Pool&#xff09; 是一种并发编程的设计模式&#xff0c;用于管理和复用多个线程…...

少样本提示词模板

文章目录 少样本提示词模板 少样本提示词模板 少样本提示是一种基于机器学习的技术&#xff0c;利用少量的样本&#xff08;即提示词的示例部分&#xff09;来引导模型对特定任务进行学习和执行。这些示例能让模型理解开发者期望它完成的任务的类型和风格。在给定的任务中&…...

SQLGlot:用SQLGlot解析SQL

几十年来&#xff0c;结构化查询语言&#xff08;SQL&#xff09;一直是与数据库交互的实际语言。在一段时间内&#xff0c;不同的数据库在支持通用SQL语法的同时演变出了不同的SQL风格&#xff0c;也就是方言。这可能是SQL被广泛采用和流行的原因之一。 SQL解析是解构SQL查询…...

代码随想录算法训练营Day35

第九章 动态规划part03 正式开始背包问题&#xff0c;背包问题还是挺难的&#xff0c;虽然大家可能看了很多背包问题模板代码&#xff0c;感觉挺简单&#xff0c;但基本理解的都不够深入。 如果是直接从来没听过背包问题&#xff0c;可以先看文字讲解慢慢了解 这是干什么的。 …...

ECharts 样式设置

ECharts 样式设置 引言 ECharts 是一款功能强大的可视化库&#xff0c;广泛用于数据可视化。样式设置是 ECharts 中的重要一环&#xff0c;它能够帮助开发者根据需求调整图表的视觉效果&#xff0c;使其更加美观和易于理解。本文将详细介绍 ECharts 的样式设置&#xff0c;包…...

【腾讯前端面试】纯css画图形

之前参加腾讯面试&#xff0c;第一轮是笔试&#xff0c;面试官发的试卷里有一题手写css画一个扇形、一个平行四边形……笔试时间还是比较充裕的&#xff0c;但是我对这题完全没有思路&#x1f62d;于是就空着了&#xff0c;最后也没过。 今天偶然翻到廖雪峰大佬的博客里提到了关…...

DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法

在使用DBeaver连接MySQL数据库时&#xff0c;如果遇到“Access denied for user ip (using password: YES)”的错误提示&#xff0c;说明用户认证失败。此问题通常与数据库用户权限、配置错误或网络设置有关。本文将详细介绍解决此问题的步骤。 一、检查用户名和密码 首先&am…...

截止到2025年2月1日,Linux的Wayland还有哪些问题是需要解决的?

截至2025年2月1日,Wayland需要解决的核心问题可按权重从高到低排序如下: 1. 屏幕共享与远程桌面的完整支持(权重:★★★★★) 问题:企业场景(如 腾讯会议)、开发者远程调试依赖稳定的屏幕共享功能。当前Wayland依赖PipeWire和XWayland,存在权限管理复杂、多显示器选择…...

【C++篇】位图与布隆过滤器

目录 一&#xff0c;位图 1.1&#xff0c;位图的概念 1.2&#xff0c;位图的设计与实现 1.5&#xff0c;位图的应用举例 1.4&#xff0c;位图常用应用场景 二&#xff0c;布隆过滤器 2.1&#xff0c;定义&#xff1a; 2.2&#xff0c;布隆过滤器的实现 2.3&#xff0c; 应…...

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题&#xff1a;DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者&#xff1a;Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…...

CV报错与模型推理注意

错误1&#xff1a; error: OpenCV(4.10.0) :-1: error: (-5:Bad argument) in function warpAffine > Overload resolution failed: > - Cant parse dsize. Sequence item with index 0 has a wrong type > - Cant parse dsize. Sequence item with index 0 has a …...

如何解决云台重力补偿?

如何解决云台重力补偿? 最近在调试步兵云台的时候,由于枪管、图传、摄像头等重力的原因,pitch轴的参数尤其难以调整,又不想抬升和降低使用两套不同的参数,所以使用了重力补偿,效果也是比较理想的,于是整理为一篇文章记录一下 一、问题根源:枪管重力在“搞事情” 想象…...

Java 23新特性

文章目录 Java 23新特性一、引言二、Markdown文档注释&#xff08;JEP 467&#xff09;示例 三、ZGC&#xff1a;默认的分代模式&#xff08;JEP 474&#xff09;1. 为什么要引入分代模式2. 使用分代模式的优势3. 如何启用分代模式 四、隐式声明的类和实例主方法&#xff08;JE…...

二叉树--链式存储

1我们之前学了二叉树的顺序存储&#xff08;这种顺序存储的二叉树被称为堆&#xff09;&#xff0c;我们今天来学习一下二叉树的链式存储&#xff1a; 我们使用链表来表示一颗二叉树&#xff1a; ⽤链表来表⽰⼀棵⼆叉树&#xff0c;即⽤链来指⽰元素的逻辑关系。通常的⽅法是…...

OpenAI 实战进阶教程 - 第七节: 与数据库集成 - 生成 SQL 查询与优化

内容目标 学习如何使用 OpenAI 辅助生成和优化多表 SQL 查询了解如何获取数据库结构信息并与 OpenAI 结合使用 实操步骤 1. 创建 SQLite 数据库示例 创建数据库及表结构&#xff1a; import sqlite3# 连接 SQLite 数据库&#xff08;如果不存在则创建&#xff09; conn sq…...

基于直觉的理性思维入口:相提并论的三者 以“网络”为例

以下主要是 腾讯云 AI 代码助手的答问。 Q1、假设有且只有一个 能和主干网和 骨干网 相提并论的其它什么 “**网”&#xff0c;您觉得应该是什么 在考虑能与主干网和骨干网相提并论的“网”时&#xff0c;我们需要思考哪些网络在规模、重要性或功能上与这两者相当。主干网和骨…...

C++,vector:动态数组的原理、使用与极致优化

文章目录 引言一、vector 的核心原理1. 底层数据结构1.1 内存布局的三指针模型1.2 内存布局示意图 2. 动态扩容机制2.1 动态扩容过程示例 3. 关键结论4. 代码验证内存布局5. 总结 二、vector 的使用方法1. 基本操作2. 迭代器与范围遍历 三、vector 的注意事项1. 迭代器失效2. 性…...

bootstrap.yml文件未自动加载问题解决方案

在添加bootstrap.yml文件后,程序未自动扫描到,即图标是这样的: 查了一些资料,是缺少bootstrap相关依赖,虽然已经添加了spring-cloud-context依赖,但是这个依赖并未引入bootstrap依赖,可能是版本问题,需要手动引入 <dependency><groupId>org.springframework.cloud&…...

54【ip+端口+根目录通信】

上节课讲到&#xff0c;根目录起到定位作用&#xff0c;比如我们搭建一个php网站后&#xff0c;注册系统是由根目录的register.php文件执行&#xff0c;那么我们给这个根目录绑定域名https://127.0.0.1&#xff0c;当我们浏览器访问https://127.0.0.1/register.php时&#xff0…...

实现数组的扁平化

文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化 1.1 递归 通过循环递归的方式&#xff0c;遍历数组的每一项&#xff0c;如果该项还是一个数组&#xff0c;那么就继续递归遍历&#xff0c…...

blender 相机参数

目录 设置相机参数&#xff1a; 3. 设置相机参数示例 4. 相机透视与正交 5. 额外的高级设置 设置相机参数&#xff1a; 设置渲染器&#xff1a; 外参转换函数 转换测试代码&#xff1a; 获取blender渲染外参&#xff1a; 设置相机参数&#xff1a; 3. 设置相机参数示…...

物联网 STM32【源代码形式-ESP8266透传】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

一、MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种基于发布/订阅模式的轻量级通讯协议&#xff0c;构建于TCP/IP协议之上。它最初由IBM在1999年发布&#xff0c;主要用于在硬件性能受限和网络状况不佳的情…...

软考高项笔记 信息技术及其发展

信息技术及其发展 ❝ 信息系统项目管理师第二章第一节 1. 网络标准协议的定义 网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。网络协议由三个要素组成&#xff0c;分别是语义、语法和时序。 语义&#xff1a;解释控制信息每个部分的含义&#xff0c;它…...

计算机网络 性能指标相关

目录 吞吐量 时延 时延带宽积 往返时延RTT 利用率 吞吐量 时延 时延带宽积 往返时延RTT 利用率...