您的位置:首页 > 编程语言 > Java开发

Java LIst接口的实现类ArrayList与LinkedList

2020-07-02 11:31 423 查看

ArrayList

它是一个线性数组表,是一个大小可变的数组,在内存中分配连续的空间
优点:遍历元素和随机访问元素的效率比较高

ArrayList常用方法

public void add(int index,E element)
在指定位置添加元素

public boolean addAll(int index,Collection<? extends E> c)
在指定位置添加一组元素

E get(int index)
返回指定位置元素

E set(int index,E element)
替换指定位置元素

public int indexOf(Object o)
查找指定元素位置

public int lastIndexOf(Object o)
从后往前查找指定元素位置

public ListIterator listiterator()
获得List迭代器对象

public E remove(int index)
删除指定位置的元素

public List subList(int fromIndex,int toIndex)
取出集合中的子集合

LinkedList

它是一个链表,采用链表的储存方式,提供从线性表两端提取、插入和删除的方法
优点:插入、删除效率比较高
LinkedList的的方法与ArrayList几乎相同,那么怎么体现它们之间的区别呢
举个栗子:
假设我们分别用两种方法拼接150000个对象

public static long costTime(List<Object> list) {
Object obj=new Object();
long startTime=System.currentTimeMillis();
for(int i=0;i<150000;i++) {
list.add(obj);
}
long endTime=System.currentTimeMillis();
return endTime-startTime;
}
System.out.println("ArrayList用时:"+costTime(new ArrayList<>()));
System.out.println("LinkedList用时:"+costTime(new LinkedList<>()));


可以看到两种方法耗时相似
那么如果每次都在第一个地方插入元素呢

public static long costTime(List<Object> list) {
Object obj=new Object();
long startTime=System.currentTimeMillis();
for(int i=0;i<150000;i++) {
list.add(0,obj);
}
long endTime=System.currentTimeMillis();
return endTime-startTime;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐