Java中ArrayList的fori和foreach效率比较
1. list的元素为Integer
- 【代码实例1】
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
int maxNum = 1000000;
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 (val.equals(searchVal)) {
searchFlag = true;
}
}
long endTime1 = System.currentTimeMillis();
//foreach形式
long startTime2 = System.currentTimeMillis();
for (Integer val : list) {
if (val.equals(searchVal)) {
searchFlag = true;
}
}
long endTime2 = System.currentTimeMillis();
//输出运行时间
System.out.println("fori: " + (endTime1 - startTime1));
System.out.println("forearch: " + (endTime2 - startTime2));
}
- 【运行结果】
fori: 5
forearch: 8
2. 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;
}
}
- 【代码实例2】
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
int maxNum = 1000000;
for (int i = 0; i < maxNum; i++) {
list.add(new Student("student" + i, i));
}
//开始测试不同方式的for性能
int listSize = list.size();
String searchName = "student6666";
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: 17
forearch: 18
3. 分析
【代码实例1】经过多次运行,可以看出fori确实始终比foreach快,而且在本次的测试中,快的时间还不少。【代码实例2】中list的元素换成了自定义的对象,经过多次运行,时间都差不多,甚至有时两者的运行时间相同。如果非得要对fori和foreach进行循环效率的比较的话,还是建议使用fori的方式。本结果只是针对ArrayList在上述两个测试程序中测试出的结果,仅供参考。
Java中ArrayList的fori和foreach效率比较的更多相关文章
- Java中LinkedList的fori和foreach效率比较
在<Java中ArrayList的fori和foreach效率比较>中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较. 1. list ...
- java中ArrayList 、LinkList区别
转自:http://blog.csdn.net/wuchuanpingstone/article/details/6678653 个人建议:以下这篇文章,是从例子说明的方式,解释ArrayList.L ...
- Java中arraylist和linkedlist源代码分析与性能比較
Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arra ...
- JAVA中ArrayList用法
JAVA中ArrayList用法 2011-07-20 15:02:03| 分类: 计算机专业 | 标签:java arraylist用法 |举报|字号 订阅 Java学习过程中做题时 ...
- Java中ArrayList与LinkedList的区别
Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach
一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代 ...
- java中ArrayList 和 LinkedList 有什么区别
转: java中ArrayList 和 LinkedList 有什么区别 ArrayList和LinkedList都实现了List接口,有以下的不同点:1.ArrayList是基于索引的数据接口,它的 ...
- Java中ArrayList相关的5道面试题
本文参考了 <关于ArrayList的5道面试题 > 1.ArrayList的大小是如何自动增加的? 这个问题我想曾经debug过并且查看过arraylist源码的人都有印象,它的过程是: ...
- Java中ArrayList类详解
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
随机推荐
- 《Python 网络爬虫权威指南》 分享 pdf下载
链接:https://pan.baidu.com/s/1ZYEinjOwM_5dBIVftN42tg 提取码:1om6
- phpcms 容许英文目录有空格
在PHPCMS添加栏目里面,有个选项是 英文目录,这里目录可以用作伪静态功能.这么英文不能有空格等特殊字符.但是如果页面中需要引用包含空格的字符呢,例如,关于我们页面,我要显示英文about us.那 ...
- 【坚持】Selenium+Python学习记录 DAY8
2018/05/ 28 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) 继续敲类相关的代码 #No.1 class peo ...
- 安装keystone时创建用户失败
系统:centos7.3 版本:openstack ocata 1.问题描述 安装keystone在创建用户时报错: The request you have made requires authen ...
- jobs命令详解
基础命令学习目录首页 在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出root的. 输入命令:exit终端显示:There are stopped jobs. 解决方法:方法一 ...
- js中 null, undefined, 0,空字符串,false,不全等比较
null == undefined // true null == '' // false null == 0 // false null == false // false undefined = ...
- Python3中的函数 大全
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().但也可以自己创建 ...
- C# Js 时间格式化问题
C# 后台: .ToString("dd-MMM-yyyy", System.Globalization. DateTimeFormatInfo.InvariantInfo) eg ...
- 第一节 Linux系统简介
一.Linux定义 Linux 是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS. 操作系统在整个计算机系统中的角色: Linux 是系统调用和内核那两层,直观的来 ...
- 1、数据库与excel表格的数据导入导出
1.居民用户界面中,excel数据导入导出: 2.其他5张表数据显示到本角色主页的container容器中.