1. 程式人生 > >Java中List集合的遍歷

Java中List集合的遍歷

java list 集合 遍歷

一、對List的遍歷有三種方式

List<String> list = new ArrayList<String>();
list.add("testone");
list.add(“testtwo”);
...

第一種:
for(Iterator<String> it = list.iterator(); it.hasNext(); ) {
....
}
這種方式在循環

執行過程中會進行數據鎖定, 性能稍差, 同時,如果你想在尋歡過程中去掉某個元素,只能調用it.remove方法, 不能使用list.remove方法, 否則一定出現並發訪問的錯誤.


第二種:
for(String data : list) {
.....
}
內部調用第一種, 換湯不換藥, 因此比Iterator 慢,這種循環方式還有其他限制, 不建議使用它。

第三種:
for(int i=0; i<list.size(); i++) {

A a = list.get(i);
...
}
內部不鎖定, 效率最高, 但是當寫多線程時要考慮並發操作的問題。

二、測試實例


package com.inspur.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
[email protected]

/* */ WHD
*2015-3-5
*/
@SuppressWarnings("unused")
public class MapTest {
private static List<String> list= new ArrayList<String>();
public static void main(String[]args){
MapTest mapTest = new MapTest();
mapTest.initList(list);
mapTest.foreach(list);
mapTest.forlist(list);
mapTest.iteratorList(list);
}
//list 集合中添加10萬條數據
public List initList(List<String> list){
int i=0;
int num=6000000;
for(i=0;i<num;i++){
list.add("list"+i);
}
return list;
}
//list 集合遍歷 foreach
public void foreach(List<String> list){
long start= System.currentTimeMillis();
for(String data:list){
String value=data;
}
long end=System.currentTimeMillis();
long count=end-start;
System.out.println("foreach 循環時間"+count);
}
// list集合遍歷 for
public void forlist(List<String> list){
long start=System.currentTimeMillis();
int i=0;
for( i=0;i<list.size();i++){
String value=list.get(i);
}
long end=System.currentTimeMillis();
long count=end-start;
System.out.println("for list.size() 遍歷時間"+count);
}

// Iterator 遍歷循環
public void iteratorList(List<String> list){
long start= System.currentTimeMillis();
for(Iterator<String> it=list.iterator();it.hasNext();){
String value=it.next();
}
long end=System.currentTimeMillis();
long count=end-start;
System.out.println("iterator 遍歷時間"+count);
}
}


三、測試結果:
(1)、第一次
foreach 遍歷時間:55
for list.size()遍歷時間:47
iterator 遍歷時間:51
(2)、第二次
foreach 遍歷時間:54
for list.size()遍歷時間:44
iterator 遍歷時間:50
(3)、第三次
foreach 遍歷時間:48
for list.size()遍歷時間:43
iterator 遍歷時間:44
從測試的結果我們可以明顯的看到效率了!

技術分享


本文出自 “doujh” 博客,請務必保留此出處http://doujh.blog.51cto.com/10177066/1939837

Java中List集合的遍歷