第一种:迭代器遍历
for(Iterator<String> it = list.iterator(); it.hasNext(); ) {
}
}
这种方式在循环执行过程中会进行数据锁定,性能稍差,同时如果你想在循环过程中去掉某个元素,只能调用it.remove方法,不能使用list.remove方法,否则一定出现并发访问的错误。
第二种:增强for循环
for(String data : list) {
}
}
内部调用第一种,换汤不换药,因此比Iterator慢,这种循环方式还有其他限制,不建议使用它
第三种:
for(int i=0; i<list.size(); i++) {
A a = list.get(i);
}
A a = list.get(i);
}
内部不锁定, 效率最高, 但是当写多线程时要考虑并发操作的问题。
以上引用http://www.cnblogs.com/chenxqNo01/p/6372594.html
根据插入大量的数据来比较
ArrayList<String> list = new ArrayList<String>();
for(int j = 0; j < 10000000; j++)
{
list.add("aaaaaa" + j);
}
long t1,t2;
t1=System.currentTimeMillis();
for(int i = 0 ; i < list.size() ; i++){
}
t2=System.currentTimeMillis();
for(int j = 0; j < 10000000; j++)
{
list.add("aaaaaa" + j);
}
long t1,t2;
t1=System.currentTimeMillis();
for(int i = 0 ; i < list.size() ; i++){
}
t2=System.currentTimeMillis();
System.out.println("t2-t1="+(t2-t1));
t1=System.currentTimeMillis();
for(String tmp:list) {
}
t2=System.currentTimeMillis();
System.out.println("t2-t1="+(t2-t1));