1.两者的UML继承关系图:
2.两者的实现方式:
ArrayList :
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
内部用数组实现数据的存取,实现RandomAccess接口,支持随机存取
LinkedList:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, Cloneable, java.io.Serializable
内部使用链表实现,包含一个内部类 Entry实现,从实现方式来看,是个双向链表,
3.两者对比
我们从添加/删除,查找两个方面来说:
- 当在两者其中增加一个数据项时,分两种情况:一种是在末尾增加一个数据项,这时两者的效率是一样的,但是ArrayList 如果达到初始分配容量的上限,会重新分配内存空间,这时需要耗费空间和时间:
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
elementData = (E[])new Object[newCapacity];
System.arraycopy(oldData, 0, elementData, 0, size);
}
第二如果在中间插入一条数据项,ArrayList会移动其他数据来腾出空间给新数据项,根据插入的位置会有不同程度的时间损失,而 LinkedList插入一条数据项的时间是一个常量
- 查找时,ArrayList支持随机查找,而LinkedList是线性查找,不支持随机元素访问
总结:
平时我们常用的就是ArrayList ,LinkList使用比较少,如果在实际情况中,需要支持快速查找,那选择ArrayList ,如果需要频繁操作数据项的增加/删除则可以考虑用LinkedList,
- 大小: 17.4 KB
- 大小: 19.8 KB
分享到:
相关推荐
Java集合系列(LinkedHashMap+LinkedList+ArrayList)
Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别ArrayList底层实际是采用数组实现的(并且该数组的类型是
1,ArrayList是数组的数据结构,LinkedList是链表的数据结构。 2,随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于 3,索引(index)的数据结构,可以直接映射到。 4,插入、...
一般大家都知道ArrayList和LinkedList的大致区别: ... ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者Integer。那
Java ArrayList Vector LinkedList map区别 各种集合的区别 写得非常详细
超全Java集合框架讲解 - 超全Java集合框架讲解 - 集合框架总览 - Iterator Iterable ListIterator - Map 和 Collection ... - ArrayList - LinkedList - Queue接口 - Deque 接口 - AbstractQueue 抽象类 - Lin
集合(Arraylist,LinkedList)进阶思维导图
与Java中的数组相比,它的容量能动态增长。不是线程安全的。ArrayList包含了两个重要的对象:elementData(Object[]类型的数组) 和 size 遍历ArrayList时,使用随机访问(即,通过索引序号访问)效率最高 转数组:...
list集合案例增、删、改、查,ArrayList与LinkedList的区别,LinkedList堆栈/队列的开发,list集合容量会自动扩容,list去除重复
下面小编就为大家带来一篇java 集合之实现类ArrayList和LinkedList的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
列表:用于创建的LinkedList,用于读取的ArrayList,用于更新和删除的堆栈(切勿使用LinkedList进行删除)。 Maps :HashMap用于创建和删除,LinkedHashMap用于读取和更新。 集合:HashSet用于创建,更新和删除,...
目录前言数组与集合区别集合描述集合格式方法ArrayList实例1.add(E e)2.add(int index, E element)3.addAll(Collection c)4.clear() 与 isEmpty()5.contains(Object o)6.indexOf(Object o)7.iterator()8.remove(int ...
掌握List集合、Set集合、Map集合的使用以及Iterator迭代器和foreach循环的使用 了解常用的集合类 熟悉泛型的使用
这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...
Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)
与 Exception 有关的 Java 关键字 19 什么是 Error 20 内部类 20 集合 20 ArrayList 21 Vector 21 LinkedList 21 Stack 21 HashSet 22 TreeSet 22 LinkedHashSet 22 HashMap 23 集合实现类特征图 23 泛形 23 反射 24...
总结了集合中常用的一点点,希望可以共享 List:LinkedList,ArrayList,Vector(Stack),Set Map:Hashtable,HashMap,WeakHashMap
实现类:红色Collection|_____Set(HashSet)| |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList) Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。Set:不能包含重复的元素,子接口SortedSet是...
3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名...
ArrayList: 数据结构:一维数组 LinkedList: 数据结构:双向链表 Vector: 数据结构:一维数组 Stack: 数据结构:一维数组 特点:模拟了栈的模式 Set -- Set接口(没有对下标操作...