ArrayList
(1)普通for循环,对于ArrayList速度比较快import java.util.ArrayList;
import java.util.List;
public class List_ArrayList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}(2)超级for
import java.util.ArrayList;
import java.util.List;
public class List_ArrayList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
for (String v : list) {
System.out.println(v);
}
}
}(3)迭代器iterator
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class List_ArrayList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator=list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}三者遍历速度比较
| 数据量 | for循环 | 超级for | 迭代器iterator |
| 1万 | 0ms | 2ms | 1ms |
| 10万 | 2ms | 6ms | 3ms |
| 100万 | 8ms | 33ms | 14ms |
| 1000万 | 9ms | 103ms | 14ms |
Vector
(1)普通for循环import java.util.Vector;
public class List_Vector {
public static void main(String[] args) {
Vector<String> vector=new Vector<String>();
vector.add("A");
vector.add("B");
vector.add("C");
for(int i=0;i<vector.size();i++){
System.out.println(vector.get(i));
}
}
}
(2)超级for
import java.util.Vector;
public class List_Vector {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.add("A");
vector.add("B");
vector.add("C");
for (String v : vector) {
System.out.println(v);
}
}
}(3)迭代器iterator
import java.util.Iterator;
import java.util.Vector;
public class List_Vector {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.add("A");
vector.add("B");
vector.add("C");
Iterator iterator = vector.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
(4)枚举器Enumeration(Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现),现在尽量采用Iterator迭代器,Enumeration接口只可用于遍历一些“古老”的集合类,如Vector(包括其子类Stack)、Hashtable两个集合类,以及另一个极少使用的BitSet,这些都是从JDK1.遗留下来的集合类。)
import java.util.Enumeration;
import java.util.Vector;
public class List_Vector {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.add("A");
vector.add("B");
vector.add("C");
Enumeration enumeration=vector.elements();
while (enumeration.hasMoreElements()) {
System.out.println(enumeration.nextElement());
}
}
}四者遍历速度比较
| 普通for循环 | 超级for | 迭代器iterator | 枚举器Enumeration | |
| 1万 | 1ms | 4ms | 1ms | 2ms |
| 10万 | 4ms | 12ms | 10ms | 9ms |
| 100万 | 36ms | 55ms | 46ms | 46ms |
| 1000万 | 322ms | 363ms | 347ms | 340ms |
LinkedList
(1)普通for循环
import java.util.LinkedList;
import java.util.List;
public class List_LinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
}
}
(2)超级for
import java.util.LinkedList;
import java.util.List;
public class List_LinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
for (String v : list) {
System.out.println(v);
}
}
}(3)迭代器iterator
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class List_LinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}(4)使用pollFirst()方法(会取出首元素并删除,遍历完list会变为空,list为空时若再输出会为null)
import java.util.LinkedList;
import java.util.List;
public class List_LinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
while (list.size() != 0) {
System.out.println(list.pollFirst());
}
}
}(5)使用removeFirst()方法(会取出首元素并删除,遍历完list会变为空,list为空时若再输出会抛出异常)
import java.util.LinkedList;
import java.util.List;
public class List_LinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
while (list.size() != 0) {
System.out.println(list.removeFirst());
}
}
}五者遍历速度比较
| for循环 | 超级for | 迭代器iterator | pollFirst()方法 | removeFirst()方法 | |
| 1万 | 84ms | 4ms | 2ms | 2ms | 2ms |
| 10万 | 13534ms | 6ms | 3ms | 3ms | 4ms |
| 30万 | 153636ms | 27ms | 18ms | 15ms | 14ms |
| 50万 | 1192463ms | 37ms | 30ms | 24ms | 25ms |
本文对比了不同集合类(ArrayList, Vector, LinkedList)在Java中使用四种常见遍历方法(普通for循环、增强for循环、迭代器iterator、枚举器Enumeration)的速度差异,并提供了具体的实现代码及测试结果。
693

被折叠的 条评论
为什么被折叠?



