Vector, ArrayList, LinkedList

在jdk2之前(在的Java集合框架之前),要存储多个数据,此时存在一个叫Vector类

Vector类底层其实就是一个对象数组,矢量类中的方法是支持同步(方法使用synchronized修饰)

集合类中存储的对象是对象的引用,而不是对象的本身

Vector, ArrayList, LinkedList

=====================================================

ArrayList类是Java集合框架出现后用来取代Vector类的:

二者底层原理都是基于数组的算法,一模一样

区别:

Vector:所有方法都使用了synchronized修饰符

ArrayList:所有方法都没有使用synchronized修饰符

即使以后在多线程环境下,我们也不使用Vector类:

ArrayList list=Collection.synchronizedList(new ArrayList(...));

====================================================

LinkedList类是双向链表,单向队列,双向队列,栈的实现类

LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法

LinkedList类中存在很多方法,但是功能相同,LinkedList表示了多种数据结构的实现,每一种数据结构的操作名字不同

LinkedList类是线程不安全的类,在多线程环境下

LinkedList list=Collection.synchronizedList(new LinkedList(...));

无论是链表还是队列,都特别擅长操作头和尾的节点

在LinkedList中的大多数方法都是xxxFirst/xxxLast的

-------------------------------------------------------

LinkedList中存在Object get(index),表示根据索引位置获取对应的元素

链表中没有索引的概念,本不应该有索引,但是从Java2开始,存在了集合框架,让LinkedList类作为List接口的实现类,List中提供了根据索引找元素的方法,LinkedList内部类提供了一个变量来作为索引

该方法要少用,因为LinkedList不擅长做查询操作,擅长保存,删除操作

Vector, ArrayList, LinkedList