java for foreach 效率_Java中LinkedList的fori和foreach效率比较

在《Java中ArrayList的fori和foreach效率比较》中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较。

1. list的元素为自定义的对象

自定义的Student类

public class Student {

private String name;

private Integer age;

public Student(String name, Integer age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public Integer getAge() {

return age;

}

}

【代码实例1】

public static void main(String[] args) {

List list = new LinkedList();

int maxNum = 100000;

for (int i = 0; i < maxNum; i++) {

list.add(new Student("student" + i, i));

}

//开始测试不同方式的for性能

int listSize = list.size();

String searchName = "student666";

boolean searchFlag = false;

//基本形式的for循环

long startTime1 = System.currentTimeMillis();

for (int i = 0; i < listSize; i++) {

Student val = list.get(i);

if (searchName.equals(val.getName())) {

searchFlag = true;

}

}

long endTime1 = System.currentTimeMillis();

//foreach形式

long startTime2 = System.currentTimeMillis();

for (Student stu : list) {

if (searchName.equals(stu.getName())) {

searchFlag = true;

}

}

long endTime2 = System.currentTimeMillis();

//输出运行时间

System.out.println("fori: " + (endTime1 - startTime1));

System.out.println("forearch: " + (endTime2 - startTime2));

}

【运行结果】

fori: 28628

forearch: 10

2. list元素为Integer

【代码实例2】

public static void main(String[] args) {

List list = new LinkedList();

int maxNum = 10000;

for (int i = 0; i < maxNum; i++) {

list.add(i);

}

//开始测试不同方式的for性能

int listSize = list.size();

Integer searchVal = 66666;

boolean searchFlag = false;

//基本形式的for循环

long startTime1 = System.currentTimeMillis();

for (int i = 0; i < listSize; i++) {

Integer val = list.get(i);

if (searchVal.equals(val)) {

searchFlag = true;

}

}

long endTime1 = System.currentTimeMillis();

//foreach形式

long startTime2 = System.currentTimeMillis();

for (Integer val : list) {

if (searchVal.equals(val)) {

searchFlag = true;

}

}

long endTime2 = System.currentTimeMillis();

//输出运行时间

System.out.println("fori: " + (endTime1 - startTime1));

System.out.println("forearch: " + (endTime2 - startTime2));

}

【运行结果】

fori: 55

forearch: 2

3. 结果分析及结论

从【代码实例1】和【代码实例2】的多次运行结果来看,fori的性能是远落后于foreach的性能。可以看出,当list为LinkedList的时候,建议使用foreach的方式来遍历,效率较高。以上结果是在上述代码的条件下得出的,仅供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java teechart怎么用_TeeChart使用范例

在窗体上加入TeeChart控件&#xff0c;并通过属性加入4个TLineSeries&#xff0c;分别命名为Series1,Series2,Series3,Series4,并添加一按钮Button1,其Click事件为:procedure TForm1.Button1Click(Sender:TObject);beginSeries1.FillSampleValues(200);Series2.FillSampleValue…

java c标签 if有值_c标签 if else c标签 总结

[b]STL标签用法关键字&#xff1a;JSTL标签、、、、、、、、原来一直没有看过&#xff0c;我说过我是新手&#xff0c;但是好多资料上似乎也不重视 JSTL 。我看项目源代码发现其中使用到了这个标签库&#xff0c;感觉其还真是方便&#xff0c;页面看起来更加清爽。减少了 JAVA …

java多态的两种形式_java核心(八):继承与方法重写、final、多态性的两种描述形式...

一、继承的作用子类继承父类的属性和方法&#xff0c;实现代码的复用&#xff1b;子类扩充自己的标准&#xff0c;实现精细化的类型定义。二、子类构造方法的限制子类在实例化的时候&#xff0c;默认先实例化父类对象&#xff0c;然后再实例化本类对象&#xff1b;子类构造方法…

java bean状态_无状态和有状态企业Java Bean

我将通过Java EE 6教程&#xff0c;我试图了解无状态和有状态会话bean之间的区别。如果无状态会话bean不在方法调用之间保留它们的状态&#xff0c;为什么我的程序执行它的方式&#xff1f;package mybeans;import javax.ejb.LocalBean;import javax.ejb.Stateless;LocalBeanSt…

java 树的数据结构_Java数据结构之树(二叉树)

一、概述1.以二叉树为例熟悉树形结构&#xff0c;二叉树的定义如下&#xff1a;1.1.二叉树&#xff1a;是结点有限的集合&#xff0c;这个集合或者是空&#xff0c;或者由一个根结点或两棵互不相交的称为左子树和右子树的二叉树组成。二叉树是一个递归的定义&#xff0c;从中可…

java 纯面向对象_Java到底是不是一种纯面向对象语言?

原标题&#xff1a;Java到底是不是一种纯面向对象语言&#xff1f;Java——是否确实的 “纯面向对象”&#xff1f;让我们深入到Java的世界&#xff0c;试图来证实它。在我刚开始学习 Java 的前面几年&#xff0c;我从书本里知道了 Java 是遵循 “面向对象编程范式(Object Orie…

java爬虫post 404_POST 后台404错误

今天在开发一个用户信息更新模块的时候遇到了两个问题&#xff1a;1、在我提交form表单的时候我希望在提交表单之后页面不刷新&#xff0c;同时返回更新数据2、向后台POST表单信息的时候&#xff0c;后台显示POST url 404的错误解决第一个问题的使用使用jquery.form的插件进行异…

java防止重复启动bat_java调用exe,及调用bat不成功的解决办法

开门见山的说&#xff0c;文件目录如下想调用123.exe,但是尝试了几次调用不到&#xff0c;然后写了个bat。初始内容如下echo offD:cd test"123.exe"双击可以运行&#xff0c;但是java代码无法调用&#xff0c;怪事。于是&#xff0c;辗转反侧&#xff0c;苦思冥想&am…

freetextbox java_FreeTextBox 增加按钮

红色部分是我自己添加上去的&#xff0c;它默认的文件夹是aspnet_client\FreeTextBox&#xff0c;所以ButtonImage这个属性是指在aspnet_client\FreeTextBox\images里的psn.gif图片。ScriptBlock 当然是指要执行的确JS事件了。其它类型的ToolbarButton有&#xff1a;Bold 加粗…

mysql for 语句执行顺序_MySQL使用profile分析SQL语句执行过程

分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中&#xff0c;可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。对于全局级别则作用于整个MySQL实例&#xff0c;而session级别紧影响当前session。该参数开启后&#xff0c;后续执行的…

java jdbc 操作_Java:JDBC操作

内容&#xff1a;供程序员调用的接口与类&#xff0c;集成在java.sql和javax.sql包中&#xff0c;如&#xff1a;DriverManager类Connection接口Statement接口ResultSet接口1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");2.Connection conn Dri…

java 线程 函数_java – 从后台线程调用主线程上的函数

更新我已经更新了这个问题,使用建议的SwingWorker类包含Java实现的源代码,以实现与Objective-C示例相同的结果.希望这将有助于未来的冒险家.Document myDoc ...;Model myModel ...;SwingWorker analyzeDocument new SwingWorker() {Overridepublic Dictionary doInBackgroun…

java se5和8_javaSE_8系列博客——Java语言的特性(三)--类和对象(5)--定义方法...

以下是一个典型的定义一个方法的示例&#xff1a;public double calculateAnswer(double wingSpan, int numberOfEngines,double length, double grossTons) {//do the calculation here}方法声明的唯一必需元素是方法的返回类型&#xff0c;名称&#xff0c;一对括号()和大括号…

下面选项中不是开发java程序的步骤是_Java基础试题及其答案2

Java试题1) java程序中&#xff0c;main方法的格式正确的是()。(选择一项)a)static void main(String[] args)b)public void main(String[] args)c)public static void main(String[]s)d)public static void main(String[] args)2)给定java代码&#xff0c;如下&#xff1a;pub…

java java.doc_使用 javadoc 自动生成 Java 文档

Java 的注释&#xff0c;单行&#xff0c;多行的语法就不在赘述了。javadoc tags给 Java 源码文件书写注释&#xff0c;使用常见的 Java 注释可以实现一些&#xff0c;也可以通过如下的 Javadoc 的 Tags 来实现一些特殊的比如跳转&#xff0c;参数返回值等特殊标记。javadoc 标…

java增删改一键生成_easyCode(java自动生成增删改查代码)

【实例简介】读取数据库表结构 自动生成增删改查代码【实例截图】【核心代码】package com.isoftstone.autocoding;import com.isoftstone.autocoding.common.Column;import com.isoftstone.autocoding.common.Table;import com.isoftstone.autocoding.utils.CamelCaseUtils;im…

java8.0 platform图_Java Platform SE binary语言-Java编程32位/64位版(jdk-jeb)下载V8.0.2510.8官方安装版-西西软件下载...

Java编程32位/64位版(jdk-jeb)是一款功能强大的计算机编程语言工具&#xff0c;Java技术让您可以在安全的计算环境下工作和游戏。使用 Java您可以畅玩网络游戏、与世界各地的朋友聊天、计算按揭利息&#xff0c;还可以在 3D 模式下浏览图像&#xff0c;诸多功能不一而足。软件特…

java同时关闭两个窗口_在一个窗口中同时关闭多个窗口的问题(Swing中事件多点传送的问题) | 学步园...

class A{}A中包含有&#xff1a;JFrame frameA;JButton btnA;class B{}B中包含有&#xff1a;final JFrame frameB;Static boolean wantToSave true;frameB.addWindowListener( new WindowAdapter(){pubilic void windowClosing(windowEvent we…

JAVA数组扁平化整合_5种方法实现数组扁平化

数组扁平化概念数组扁平化是指将一个多维数组变为一维数组[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]复制代码实现1. reduce遍历数组每一项&#xff0c;若值为数组则递归遍历&#xff0c;否则concat。function flatten(arr){return arr.reduce((result, item)> {retur…

java 线程由浅入深_由浅入深,Java 并发编程中的 Synchronized(一)

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用&#xff1a;确保线程互斥的访问同步代&#xff0c;锁自动释放&#xff0c;多个线程操作同个代码块或函数必须排队获得锁&#xff0c;保证共享变量的修改能够及时可见&#xff0c;获得…