日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2024/9/27 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java for foreach 效率_Java中LinkedList的fori和foreach效率比较 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在《Java中ArrayList的fori和foreach效率比較》中對(duì)ArrayList的兩種循環(huán)方式進(jìn)行了比較,本次對(duì)LinkedList的兩種遍歷方式進(jìn)行效率的比較。

1. list的元素為自定義的對(duì)象

自定義的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;

}

}

【代碼實(shí)例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));

}

//開(kāi)始測(cè)試不同方式的for性能

int listSize = list.size();

String searchName = "student666";

boolean searchFlag = false;

//基本形式的for循環(huán)

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();

//輸出運(yùn)行時(shí)間

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

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

}

【運(yùn)行結(jié)果】

fori: 28628

forearch: 10

2. list元素為Integer

【代碼實(shí)例2】

public static void main(String[] args) {

List list = new LinkedList();

int maxNum = 10000;

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

list.add(i);

}

//開(kāi)始測(cè)試不同方式的for性能

int listSize = list.size();

Integer searchVal = 66666;

boolean searchFlag = false;

//基本形式的for循環(huán)

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();

//輸出運(yùn)行時(shí)間

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

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

}

【運(yùn)行結(jié)果】

fori: 55

forearch: 2

3. 結(jié)果分析及結(jié)論

從【代碼實(shí)例1】和【代碼實(shí)例2】的多次運(yùn)行結(jié)果來(lái)看,fori的性能是遠(yuǎn)落后于foreach的性能。可以看出,當(dāng)list為L(zhǎng)inkedList的時(shí)候,建議使用foreach的方式來(lái)遍歷,效率較高。以上結(jié)果是在上述代碼的條件下得出的,僅供參考。

總結(jié)

以上是生活随笔為你收集整理的java for foreach 效率_Java中LinkedList的fori和foreach效率比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。