List接口特点
List 接口存储一组允许重复,有序(插入顺序)的对象,有下标,插入顺序作为遍历的顺序。
List接口的三个常用实现类
使用场景
1、对插入元素数据的速度要求不高,但是要求快速访问元素数据,则使用ArrayList。
2、对访问元素数据速度不做要求不高,但是对插入和删除元素数据速度要求高的情况,则使用LinkedList。3、有多线程对集合元素进行操作时候,则使用Vector,但是现在一般不再使用Vector,如需在多线程下使用,可以用CopyOnWriteArrayList,在java.util.concurrent包下。4、有需求是希望后保存的数据先读取出来,则使用Stack;基于数组实现的,是栈,它继承与Vector。List转数组方法
ArrayListlist=new ArrayList ();String[] strings = new String[list.size()];list.toArray(strings);
数组转成List
String[] s = {"a","b","c"};List list = java.util.Arrays.asList(s);
性能测试
/* * 性能测试,通过插入、随机读取和删除对ArrayList、LinkedList、Vector和Stack进行测试! * 结论:看LinkedList * 插入10万个元素,LinkedList所花时间最短:17 ms。 * 删除10万个元素,LinkedList所花时间最短: 9 ms。 * 遍历10万个元素,LinkedList所花时间最长:10255 ms;而ArrayList、Stack和Vector则相差不多,都只用了几秒。 * (1) 对于需要快速插入,删除元素,应该使用LinkedList。 * (2) 对于需要快速随机访问元素,应该使用ArrayList。 * */public class ListTest { private static final int COUNT = 100000; //十万 private static ArrayList
输出结果:
....开始测试插入元素..........ArrayList : 插入 100000元素, 使用的时间是 970 msLinkedList : 插入 100000元素, 使用的时间是 17 msVector : 插入 100000元素, 使用的时间是 968 msStack : 插入 100000元素, 使用的时间是 888 ms....开始测试读取元素..........ArrayList : 随机读取 100000元素, 使用的时间是 6 msLinkedList : 随机读取 100000元素, 使用的时间是 10255 msVector : 随机读取 100000元素, 使用的时间是 8 msStack : 随机读取 100000元素, 使用的时间是 4 ms....开始测试删除元素..........ArrayList : 删除 100000元素, 使用的时间是 1460 msLinkedList : 删除 100000元素, 使用的时间是 9 msVector : 删除 100000元素, 使用的时间是 1472 msStack : 删除 100000元素, 使用的时间是 894 ms
如果内容对你有帮助希望点赞收藏谢谢!!!