我是靠谱客的博主 炙热小蘑菇,最近开发中收集的这篇文章主要介绍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的方式来遍历,效率较高。以上结果是在上述代码的条件下得出的,仅供参考。

最后

以上就是炙热小蘑菇为你收集整理的java for foreach 效率_Java中LinkedList的fori和foreach效率比较的全部内容,希望文章能够帮你解决java for foreach 效率_Java中LinkedList的fori和foreach效率比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部