ArrayList
集合的体系:
------------| Collection 单列集合的根接口
-----------------| List 实现了List接口的结合类,具备的特点:有序,可重复
---------------------- | ArrayList ArrayList底层是维护了一个Object数组来实现的,特点:查询速度快、增删慢。
---------------------- | LinkedList LinkedList底层是使用了链表数据结构实现的。特点:查询速度慢,增删快。
---------------------- | Vector Vector类可以实现可增长的对象数组,底层也是维护了一个Object数组。
-----------------| Set 实现了Set接口的集合类,具备的特点:无序,不可重复
ArrayList的特有方法:
ensureCapacity(int minCapacity)
trimToSize()
笔试题目:使用ArrayList无参的构造函数创建一个对象时,默认的容量是多少?如果长度不够时又自增长多少?
ArrayList底层是维护了一个Object的数组实现的,使用无参构造函数时,Object数组默认的容量时10,当长度不够时,自动增长0.5倍
ArrayList的实现原理和它的特点:
ArrayList底层是维护了一个Object数组来实现的,特点:查询速度快、增删慢。
什么时候使用ArrayList:如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。比如:高效的图书馆
LinkedList
List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List接口外,LinkedList类还为在列表的开头及结尾get、remove和insert元素提供了统一的命名方法。这些操作允许将链表列表用作堆栈、队列和双端队列。
LinkedList的实现原理和它的特点:
LinkedList底层是使用了链表数据****结构实现的。特点:查询速度慢,增删快。
LinkedList常用的特有方法:
1、方法介绍
addFirst(E e)
addLast(E e)
getFirst()
getLast()
removeFirst()
removeLast()
2、数据结构
栈(1.6):主要是用于实现堆栈数据结构的存储方式的
先进后出,后进先出
push() 将元素推入此列表所表示的堆栈,换句话说,将该元素插入此列表的开头。
pop() 删除并返回集合中的首元素
队列(双端队列1.5):主要是为了可以使用LinkedList模拟队列数据结构的存储方式。
先进先出,后进后出
offer() 将指定元素添加到此列表的末尾(最后一个元素)
poll() 删除集合的首元素。获取并移除此列表的头(第一个元素)
3、返回逆序的迭代器对象
descendingIterator() 返回逆序的迭代器对象
public class Demo{
public static void main(String[] args){
LinkedList list = new LinkedList();
list.add("三");
list.add("四");
list.add("五");
list.addFirst("二"); // 把元素添加到集合的首位置上
list.addLast("六"); // 把元素添加到集合的末尾处
Iterator it = list.descendingIterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
Vector
Vector类可以实现可增长的对象数组,与数组一样,它包含可以使用证书索引进行访问的组件。但是,vector的大小可以根据需要增大或缩小。
Vector底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
ArrayList与Vector的区别:
相同点:ArrayList与Vector底层都是使用了Object数组实现的。
不同点:1、ArrayList是线程不同步的,操作效率高。Vector是线程同步的,操作效率低。
2、ArrayList是JDK1.2出现,Vector是JDK1.0出现的。