刚才去试了一下,linkedlist用传统方式遍历速度非常慢,foreach却非常快,即使是加上了一个自定义自增变量。甚至说速度比线性表用传统循环遍历更快。
public void testArrayList() {
List outList = new ArrayList<>(1000000);
Date date = new Date();
for(int i = 0; i < 1000000; i++) {
outList.add(String.valueOf(i + 1));
}
Date date1 = new Date();
System.out.println(“构建对象用时:” + (date1.getTime() – date.getTime()));
StringBuilder sb = new StringBuilder();
Calendar cal = Calendar.getInstance();
for(int i = 0; i < outList.size(); i++) {
sb.append(outList.get(i));
}
Calendar cal1 = Calendar.getInstance();
long time = cal1.getTimeInMillis() – cal.getTimeInMillis();
System.out.println(time);
}
public void testLinkedList() {
List outList = new LinkedList<>();
Date date = new Date();
for(int i = 0; i < 1000000; i++) {
outList.add(String.valueOf(i + 1));
}
Date date1 = new Date();
System.out.println(“构建对象用时:” + (date1.getTime() – date.getTime()));
StringBuilder sb = new StringBuilder();
Calendar cal = Calendar.getInstance();
for(String num : outList) {
sb.append(num);
}
Calendar cal1 = Calendar.getInstance();
long time = cal1.getTimeInMillis() – cal.getTimeInMillis();
System.out.println(time);
}
可以自行对比一下线性表和链表创建对象时间和遍历时间。