集合类List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象:
vector:内部是数组数据结构,是同步的。增删查询都很慢。
arrarylist :内部是数组数据结构,是不同步的,代替了vector,查询的速度很快
linkedlist:内部是链表数据结构,是不同步的。增删元素的速度很快。
Vector 类是可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。
在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。 创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。
同步是线程中的概念 ,synchronized是Java中的关键字,是一种同步锁。synchronized只锁定对象,每个对象只有一个锁(lock)与之相关联,它修饰的对象有以下几种:
1.修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
2.修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
3.修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
4.修饰一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象;
注意:
1.虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以。当然,还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。
2.静态方法是属于类的而不属于对象的。同样的,synchronized修饰的静态方法锁定的是这个类的所有对象。
Vector<E> v=new Vector<E>();定义一个Vector类对象
// 默认构造函数 Vector() // capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。 Vector(int capacity) // capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。 Vector(int capacity, int capacityIncrement) //创建一个包含collection的Vector Vector(Collection<? extends E> collection) //将指定元素追加到此向量的末尾。 boolean add(E o) //在此向量的指定位置插入指定的元素。 void add(int index, E element) //将指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。 boolean addAll(Collection<? extends E> c) //在指定位置将指定 Collection 中的所有元素插入到此向量中。 boolean addAll(int index, Collection<? extends E> c) //将指定的组件添加到此向量的末尾,将其大小增加 1。 void addElement(E obj) //返回此向量的当前容量。 int capacity() //从此向量中移除所有元素。 void clear() //返回向量的一个副本。 Object clone() //测试指定的对象是否为此向量中的组件。 boolean contains(Object elem) //如果此向量包含指定 Collection 中的所有元素,则返回 true。 boolean containsAll(Collection<?> c) //将此向量的组件复制到指定的数组中。 void copyInto(Object[] anArray) //返回指定索引处的组件。 E elementAt(int index) //返回此向量的组件的枚举。 Enumeration elements() //比较指定对象与此向量的相等性。 boolean equals(Object o) //返回此向量的第一个组件(位于索引 0 处的项)。 E firstElement() //返回向量中指定位置的元素。 E get(int index) //搜索给定参数的第一个匹配项,使用 equals 方法测试相等性。 int indexOf(Object elem) //搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性。 int indexOf(Object elem, int index) //将指定对象作为此向量中的组件插入到指定的 index 处。 void insertElementAt(E obj, int index) //测试此向量是否不包含组件。 boolean isEmpty() //返回此向量的最后一个组件。 E lastElement() //返回指定的对象在此向量中最后一个匹配项的索引。 int lastIndexOf(Object elem) //向后搜索指定的对象,从指定的索引处开始搜索,并返回一个索引。 int lastIndexOf(Object elem, int index) //移除此向量中指定位置的元素。 E remove(int index) //移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。 boolean remove(Object o) //从此向量中移除包含在指定 Collection 中的所有元素。 boolean removeAll(Collection<?> c) //从此向量中移除全部组件,并将其大小设置为零。 void removeAllElements() //从此向量中移除变量的第一个(索引最小的)匹配项。 boolean removeElement(Object obj) //删除指定索引处的组件。 void removeElementAt(int index) //从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。 protected void removeRange(int fromIndex, int toIndex) //用指定的元素替换此向量中指定位置处的元素。 E set(int index, E element) //将此向量指定 index 处的组件设置为指定的对象。 void setElementAt(E obj, int index) //设置此向量的大小。 void setSize(int newSize) //返回此向量中的组件数。 int size() //返回一个数组,包含此向量中以正确顺序存放的所有元素。 Object[] toArray() T[] toArray(T[] a) //返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。 String toString() //返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。