list:有序可重复 List接口在Collection的基础上添加了大量的用法,使得可以在List的中间插入和移除元素。 这里主要体现一下两种类型的List:
- 基本的ArrayList,本身就是数组实现的,数组有索引,就像书籍有目录一样,中间插入的时候,后边顺序需要整体加一或减一,速度较慢。
- LinkedList,是链表实现的,也就没有索引,所以它进行中间插入较快。
- 我们这里为取出数据,可以看到LinkedList取出元素的速度没有ArrayList速度快,也是因为它没有索引的缘故,需要一遍一遍按从头往下的顺序去取,而ArrayList可以直接根据下标索引取到所需元素。
package com.yangfr;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@SuppressWarnings("all")
public class ListTest {
public static void main(String[] args) {
try {
test(ArrayList.class);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void test(Class clazz) throws Exception {
List list = (List)clazz.newInstance();
long setTime = System.currentTimeMillis();
for (int i = 1; i <= 100000; i++) {
list.add(i);
}
long getTime = System.currentTimeMillis();
System.out.println("放入时间:" + (getTime - setTime) + "ms");
long startTime = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
Integer number = (Integer) list.get(i);
}
long endTime = System.currentTimeMillis();
System.out.println("取出速度:" + (endTime - startTime) + "ms");
}
}
将ArrayList换为LinkedList
try {
test(LinkedList.class);
} catch (Exception e) {
e.printStackTrace();
}
|