for那种方式效率最高

用了那么久的 Java For 循环,你知道哪种方式效率最高吗? 作为程序员每天除了写很多 if else 之外,写的最多的也包含 for 循环了,都知道我们 Java 中常用的 for 循环有两种方式,一种是使用 for loop,另一种是使用 foreach,那如果问你,这两种方式哪一种效率最高,你的回答是什么呢?今天阿粉就来带你看一下。首先我们先通过代码来实际测试一下,在计算耗时之前我们先创建一个大小集合,然后通过不断的获取集合中的内容来测试耗时。 简单说明一下上面的带,先创建一个 List ,然后通过两种方式的遍历来计算耗时,根据集合的大小不同,我们进行运行会 阅读详情
package com.data.struct;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();

        int runTime = 1000;//执行次数
        for (int i = 0; i < 1000 * 1000; i++) {
            list.add(i);
        }
        int size = list.size();
        long currTime = System.currentTimeMillis();//开始分析前的系统时间
        //基本的for            
        for(int j = 0; j < runTime; j++) {
            for (int i = 0; i < size; i++) {
                list.get(i);
            }
        }
        long time1 = System.currentTimeMillis();

        //foreach
        for(int j = 0; j < runTime; j++) {
            for (Integer integer : list) {
            }
        }
        long time2 = System.currentTimeMillis();

        for(int j = 0; j < runTime; j++) {
            //while
            int i = 0 ;
            while(i < size){
                list.get(i++);
            }
        }
        long time3 = System.currentTimeMillis();

        for(int j = 0; j < runTime; j++) {//普通for循环
            for (int i = 0; i < list.size(); i++) {
                list.get(i);
            }
        }
        long time4 = System.currentTimeMillis();

        for(int j = 0; j < runTime; j++) {//迭代
            Iterator<Integer> iter = list.iterator();
            while(iter.hasNext()) {
                iter.next();
            }
        }
        long time5 = System.currentTimeMillis();

        long time = time1 - currTime ;
        System.out.print("use for:" + time);
        time = time2 - time1;
        System.out.print("\tuse foreach:" + time);
        time = time3 - time2;
        System.out.print("\tuse while:" + time);
        time = time4 - time3;
        System.out.print("\tuse for2:" + time);
        time = time5 - time4;
        System.out.print("\tuse iterator:" + time);
        System.out.println();
    }
}

use for:6035	use foreach:13345	use while:5930	use for2:9853	use iterator:11767

java面试题26 java语言的下面几种数组复制方法中,哪个效率最高? java面试题26 java语言的下面几种数组复制方法中,哪个效率最高? A for 循环逐一复制 B System.arraycopy C Array.copyOf D 使用clone方法 效率:System.arraycopy > clone > Arrays.copyOf > for循环 1、System.arraycopy的用法: p... 阅读详情

相关推荐

国密证书实战:在CentOS 7上构建GmSSL私有CA与完整证书链

本文详细介绍了在CentOS 7操作系统上,使用GmSSL工具构建私有国密证书颁发机构(CA)与完整证书链的实战指南。内容涵盖从部署GmSSL、创建国密根CA、签发服务器与客户端证书,到生产环境安全加固与最佳实践的全流程,旨在帮助系统管理员和安全工程师建立统一、可控的内部国密安全通信体系。

jenkins8butler的博客 497

For循环调优

我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循环的常见优化方式。 首先,我们初始化一个集合 list,如下: List<String>list=newArrayList<String>(); 方法一:最常规的不加思考的写法 for(inti=0;i<list.size();i++){ System.out.println(l...

ShyTan的博客 342

Rope DFM一键整合包AI脸部替换教程:使用DeepFaceLab模型实现专业级视频和直播脸部替换

在AI脸部替换工具中,Rope凭借其出色的自动遮罩处理拔得头筹,结合DFM模型中的DFL XSeg遮罩处理,效果更是提升了一个台阶。因为在训练模型时,它已经通过大量的侧脸图片进行训练,达到了单张图片无法企及的效果。然而,想要通过DeepFaceLab获得专业级的效果,不仅难度大,时间成本也相当高,训练模型也是个不小的挑战。举个简单的例子,使用图片脸部替换时,如果佩戴眼镜,脸部替换后的可能会显得很假。另外,在视频中,比如歌手演唱时,话筒遮挡住脸部,这种场景也可以通过遮罩训练后的模型来处理,呈现出更逼真的效果。

m0_72580657的博客 8165

两个循环的效率哪个高?

http://topic.csdn.net/u/20071206/20/5ae1a8f9-fab5-443c-a2ea-af1d755f5de1.html

buptzwp的专栏 732

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2251

运放实现阶梯波发生器-总结报告

实验目的: 学习、理解、掌握方波电路、限幅电路积分累加电路、反馈电路 课程条件: 电脑仿真软件Multisim 原理框图和实验思路: 方波电路通过微分电路可以形成正负脉冲,在通过限幅电路后变为单脉冲,最后在积分电路中形成阶梯波。微分电路存在的意义就是为了防止方波频率过大,从而导致在经过限幅电路的方波,在一个周期内将电容的电充满,这样就不会产生阶梯波。如果方波的频率比较小,可以近似认为是正负脉冲,这样就可以跳过微分电路。 ...............

0 1万+

比较几个for循环的效率

测试一下for i、foreach、lamda list.forEach、lamda list.parallelStream().forEach的效率,对比一下哪个更快。 遍历集合 设计一个大小为10000的集合,通过各种类型的for循环遍历一遍,查看时长 long time0 = System.currentTimeMillis(); for (String str : list) { str.toString(); } System.out.println("foreach: " + (time

crazy_Oriana的博客 1379

[QMT量化交易小白入门]-104、QMT平台运行深度学习模型,预测期货价格

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 486

for和foreach那个效率更高?原因是什么?

写这篇文章的原因主要是在开发过程中突然有以下几个疑问,特抽出时间深度探究一下,以加深自身对php的理解。1、作为一名phper,for和foreach循环遍历几乎每天都在使用,那么这两种遍历方式哪一种效率更高呢? 2、效率高的原因是什么呢? 3、原理分别是什么呢? 1234首先要解决第一个问题,我们可以通过一个简单的测试看一下测试结果,测试代码如下:for循环遍历方法:public functio...

凯凯王的技术生涯 2870

【AI智能体】Spring AI Tool 从使用到实战详解

Spring AI Tool

congge 5866

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 643

Java面试-Map 的遍历方式有几种?哪种效率最高

📝 摘要 《Map遍历方式全解析》深入探讨了Java中Map集合的7种遍历方法及其性能差异。文章通过实际场景对比了keySet()、values()和entrySet()三种主要遍历方式,指出: entrySet()遍历是同时访问键值对时的最佳选择,性能最优(时间复杂度O(n)) forEach()方法(Java8+)兼具高性能和代码简洁性 keySet()+get()方式效率最低,存在重复哈希计算问题 Iterator方式适合需要边遍历边删除的场景 文章包含性能测试数据、适用场景决策树和常见面试题解析,

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

【树莓派安装Homeassistant及基本配置】

时隔一年,我又重新开始玩Homeassistant,发现其中奥妙无穷,惊喜不断。在我浅薄的认知中要学好嵌入式,必须玩过Homeassistant,并且玩出自己的名堂!因为这是最贴切实际的生活应用没有之一,每月更新使得唯有活水来;拥抱大千使得永葆青春的活力;鬼斧神工的操作精彩纷呈,可以堪称软件与硬件的完美落地!

vor234的博客 1万+

进程的通信方式?效率最高的通信方式是什么?????

功能和

weixin_42321391的博客 5594

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java有几种文件拷贝方式,哪一种效率最高?

效率最高的方式是使用NIO的或,尤其适合大文件拷贝。日常开发中,推荐使用(Java 7+),它兼顾了效率与代码简洁性,底层同样依赖的零拷贝机制。

青鱼入云的博客 466

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

进程间通信那种效率最高_几种进程间的通信方式 比较

# 管道( pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他...

weixin_39558521的博客 2286

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

进程间通信那种效率最高_一文讲懂进程间通信的几种方式

转载自:小林coding作者:小林coding开场小故事炎炎夏日,张三骑着单车去面试花了 1 小时,一路上汗流浃背。结果面试过程只花了 5 分钟就结束了,面完的时候,天还是依然是亮的,还得在烈日下奔波 1 小时回去。面试五分钟,骑车两小时。你看,张三因面试没准备好,吹空调的时间只有 5 分钟,来回路上花了 2 小时晒太阳,你说惨不惨?所以啊,炎炎夏日,为了能延长吹空调的时间,我们应该在面...

weixin_31458459的博客 5867

ArrayList遍历方式以及效率比较

package cn.Objects; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListfor { public static void main(String[] args) { // 准备数据阶段 List<Integer> list = new ArrayList<Integer&g

qq_21810059的博客 3278

为啥E进制计算机的效率最高?

任何一套计算机技术, 只要有人开发有人用, 它一定是有数学理论基础作支撑的, 比如SQL语言就是基于关系代数和集合论, 俄罗斯曾经研究过3进制计算机也是因为数学证明3进制比2进制理论上效率要高, 因为3比2更接近自然常数'e' (2.71828....). 很久以前,我在一本《计算机应用基础》教程上看到类似这样的描述:“理论上e进制是最优的进制,考虑到取整数,三进制是实际可用的最优进制,但是考虑...

全栈空间 2万+

python字典合并哪种方式效率最高?

http://www.dewen.org/q/2002/python%E5%AD%97%E5%85%B8%E5%90%88%E5%B9%B6%E5%93%AA%E7%A7%8D%E6%96%B9%E5%BC%8F%E6%95%88%E7%8E%87%E6%9C%80%E9%AB%98%3F x = {'a':1, 'b': 2} ; y = {'b':10,

vincentchou2009的专栏 1090

std::vector的几种遍历方式与效率比较

std::vector的几种遍历方式与效率比较遍历方式一方式二方式三方式四方式五效率分析h文件cpp文件测试函数的类和宏测试结果解析原文链接 std::vector是我在标准库中实用最频繁的容器。总结一下在遍历和创建vector时需要注意的一些地方。 遍历 在不考虑线程安全问题的前提下,在C++11中有五种遍历方式。 方式一 for (size_t i =0; i < vec.size(); i ++) { int d = vec[i]; } 方式二 size_t len = vec.siz

天富儿的博客 8680

for循环次数太多的时间优化_Java-性能优化片 - 哪一种for循环写法效率最高

测试结果style1 —— for(int i : list) —— 39563185毫微秒style2 —— for(int i = 0; i < list.size(); i++) —— 5012893毫微秒style3 —— for(int i = 0; i < size; i++) —— 3683956毫微秒Style4 —— for(int i = list.size() -...

weixin_39717121的博客 1259

java 遍历效率_专题三、ArrayList遍历方式以及效率比较

一、遍历方式ArrayList支持三种遍历方式。1、第一种,随机访问,它是通过索引值去遍历由于ArrayList实现了RandomAccess接口,它支持通过索引值去随机访问元素。代码如下:// 基本的forfor (int i = 0; i < size; i++){value = list.get(i);}2、第二种,foreach语句foreach语句是java5的新特征之一,在遍历数...

weixin_29479879的博客 827
上一篇: 猜猜看这个等于几
下一篇: 如何使用SWFTools 命令 将pdf文件转换为swf文件,并进行在线浏览该pdf文件
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值