一.介紹
基于數(shù)組(Array)的List,其實就是封裝了數(shù)組所不具備的一些功能方便我們使用,所以它難易避免數(shù)組的限制,同時性能也不可能超越數(shù)組。所以,在可能的情況下,我們要多運(yùn)用數(shù)組。另外很重要的一點(diǎn)就是Vector是線程同步的(sychronized)的,這也是Vector和ArrayList 的一個的重要區(qū)別。
(1)ArrayList會比Vector快,他是非同步的,如果設(shè)計涉及到多線程,還是用Vector比較好一些 。
二.知識點(diǎn)介紹
1、初次使用Vector
2、Vector的方法
三.上課對應(yīng)視頻的說明文檔
1、初次使用Vector
import java.util.*;
/**
* 演示Vector的使用。包括Vector的創(chuàng)建、向Vector中添加元素、從Vector中刪除元素、
* 統(tǒng)計Vector中元素的個數(shù)和遍歷Vector中的元素。
*/
public class VectorDemo{
public static void main(String[] args){
//Vector的創(chuàng)建
//使用Vector的構(gòu)造方法進(jìn)行創(chuàng)建
Vector v = new Vector(4);
//向Vector中添加元素
//使用add方法直接添加元素
v.add("Test0");
v.add("Test1");
v.add("Test0");
v.add("Test2");
v.add("Test2");
//從Vector中刪除元素
v.remove("Test0"); //刪除指定內(nèi)容的元素
v.remove(0); //按照索引號刪除元素
//獲得Vector中已有元素的個數(shù)
int size = v.size();
System.out.println("size:" + size);
//遍歷Vector中的元素
for(int i = 0;i < v.size();i++){
System.out.println(v.get(i));
}
}
}
2、Vector方法
(1)boolean add(E o)
將指定元素追加到此向量的末尾。
(2)void add(int index, E element)
在此向量的指定位置插入指定的元素。
(3)boolean addAll(Collection<? extends E> c)
將指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的順序追加這些元素。
(4)boolean addAll(int index, Collection<? extends E> c)
在指定位置將指定 Collection 中的所有元素插入到此向量中。
(5)void addElement(E obj)
將指定的組件添加到此向量的末尾,將其大小增加 1。
(7)int capacity()
返回此向量的當(dāng)前容量。
(8)void clear()
從此向量中移除所有元素。
(9)Object clone()
返回向量的一個副本。
(10)boolean contains(Object elem)
測試指定的對象是否為此向量中的組件。
(11)boolean containsAll(Collection<?> c)
如果此向量包含指定 Collection 中的所有元素,則返回 true。
(12)void copyInto(Object[] anArray)
將此向量的組件復(fù)制到指定的數(shù)組中。
(13)E elementAt(int index)
返回指定索引處的組件。
(14)Enumeration<E> elements()
返回此向量的組件的枚舉。
(15)void ensureCapacity(int minCapacity)
增加此向量的容量(如有必要),以確保其至少能夠保存最小容量參數(shù)指定的組件數(shù)。
(16)boolean equals(Object o)
比較指定對象與此向量的相等性。
(17)E firstElement()
返回此向量的第一個組件(位于索引 0 處的項)。
(18)E get(int index)
返回向量中指定位置的元素。
(19)int hashCode()
返回此向量的哈希碼值。
(20)int indexOf(Object elem)
搜索給定參數(shù)的第一個匹配項,使用 equals 方法測試相等性。
(21)int indexOf(Object elem, int index)
搜索給定參數(shù)的第一個匹配項,從 index 處開始搜索,并使用 equals 方法測試其相等性。
(22)void insertElementAt(E obj, int index)
將指定對象作為此向量中的組件插入到指定的 index 處。
(23)boolean isEmpty()
測試此向量是否不包含組件。
(24)E lastElement()
返回此向量的最后一個組件。
(25)int lastIndexOf(Object elem)
返回指定的對象在此向量中最后一個匹配項的索引。
(26)int lastIndexOf(Object elem, int index)
向后搜索指定的對象,從指定的索引處開始搜索,并返回一個索引。
(27)E remove(int index)
移除此向量中指定位置的元素。
(28)boolean remove(Object o)
移除此向量中指定元素的第一個匹配項,如果向量不包含該元素,則元素保持不變。
(29)boolean removeAll(Collection<?> c)
從此向量中移除包含在指定 Collection 中的所有元素。
(30)void removeAllElements()
從此向量中移除全部組件,并將其大小設(shè)置為零。
(31)boolean removeElement(Object obj)
從此向量中移除變量的第一個(索引最小的)匹配項。
(32)void removeElementAt(int index)
刪除指定索引處的組件。
(33)protected void removeRange(int fromIndex, int toIndex)
從此 List 中移除其索引位于 fromIndex(包括)與 toIndex(不包括)之間的所有元素。
(34)boolean retainAll(Collection<?> c)
在此向量中僅保留包含在指定 Collection 中的元素。
(35)E set(int index, E element)
用指定的元素替換此向量中指定位置處的元素。
(36)void setElementAt(E obj, int index)
將此向量指定 index 處的組件設(shè)置為指定的對象。
(37)void setSize(int newSize)
設(shè)置此向量的大小。
(38)int size()
返回此向量中的組件數(shù)。
(39)List<E> subList(int fromIndex, int toIndex)
返回此 List 的部分視圖,元素范圍為從 fromIndex(包括)到 toIndex(不包括)。
(40)Object[] toArray()
返回一個數(shù)組,包含此向量中以正確順序存放的所有元素。
(42)toArray(T[] a)
返回一個數(shù)組,包含此向量中以正確順序存放的所有元素;返回數(shù)組的運(yùn)行時類型為指定數(shù)組的類型。
(43)String toString()
返回此向量的字符串表示形式,其中包含每個元素的 String 表示形式。
(44)void trimToSize()
對此向量的容量進(jìn)行微調(diào),使其等于向量的當(dāng)前大小。
案例:
import java.util.Vector;?
import java.lang.*;?
import java.util.Enumeration;?
public class VectorApp?
{?
public static void main(String args[])?
{?
Vector v1 = new Vector();?
Integer integer1= new Integer(1);?
//加入為字符串對象?
v1.addElement("one");?
//加入的為integer的對象?
v1.addElement(integer1);?
v1.addElement(integer1);?
v1.addElement("two");?
v1.addElement(new Integer(2));?
v1.addElement(integer1);?
v1.addElement(integer1);?
//轉(zhuǎn)為字符串并打印?
System.out.println("The Vector v1 is:\n\t"+v1);?
//向指定位置插入新對象?
v1.insertElement("three",2);?
v1.insertElement(new Float(3.9),3);?
System.out.println("The Vector v1(used method?
insertElementAt()is:\n\t)"+v1);?
//將指定位置的對象設(shè)置為新的對象?
//指定位置后的對象依次往后順延?
v1.setElementAt("four",2);?
System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);?
v1.removeElement(integer1);?
//從向量對象v1中刪除對象integer1?
//由于存在多個integer1,所以從頭開始。?
//找刪除找到的第一個integer1.?
Enumeration enum = v1.elements();?
System.out.println("The vector v1 (used method removeElememt()is");?
while(enum.hasMoreElements())?
System.out.println(enum.nextElement()+"");?
System.out.println();?
//使用枚舉類(Enumeration)的方法取得向量對象的每個元素。?
System.out.println("The position of Object1(top-to-botton):"+v1.indexOf(integer1));?
System.out.println("The position of Object1(tottom-to-top):"+v1.lastIndexOf(integer1));?
//按不同的方向查找對象integer1所處的位置?
v1.setSize(4);?
System.out.println("The new Vector(resized the vector)is:"+v1);?
//重新設(shè)置v1的大小,多余的元素被拋棄?
}?
}
3、Vector
Vector:我們可以將其理解為版本舊的、安全的、效率低的ArrayList,Vector中提供了一個獨(dú)特的取出方式,就是枚舉Enumeration。此接口Enumeration的功能與 Iterator 接口的功能是類似的。
有興趣的同學(xué)可以自己了解:
public E elementAt(int index)? / get(index )
public E firstElement()
public E lastElement()
public void setElementAt(E obj, int index) set(index,obj)
public void removeElementAt(int index)及其他刪除 remove(index)
public Enumeration<E> elements()
import java.util.Enumeration;
import java.util.Vector;
/*
* Vector :? 數(shù)組結(jié)構(gòu),單線程的 ArrayList.
*/
public class Demo2 {
public static void main(String[] args) {
Vector<String > vector = new Vector<>();
vector.addElement("111");
vector.addElement("222");
vector.addElement("444");
vector.addElement("333333");
// 獲取 枚舉.
Enumeration<String> elements = vector.elements();
while (elements.hasMoreElements()) {
String nextElement = elements.nextElement();
System.out.println(nextElement);
}
}
}