Vector, ArrayList, LinkedList
在jdk2之前(在的Java集合框架之前),要存储多个数据,此时存在一个叫Vector类
Vector类底层其实就是一个对象数组,矢量类中的方法是支持同步(方法使用synchronized修饰)
集合类中存储的对象是对象的引用,而不是对象的本身
=====================================================
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不擅长做查询操作,擅长保存,删除操作