----------------------android培训、java培训、期待与您交流! ----------------------
从数学上讲,向量(Vector)就是数字的一个有穷序列,从几何上看,我们可以把二位向量(x,y)看成平面中的一个点,而三维向量(x,y,z)表示三维空间中的一个点。在线性代数中,经常可见到n个元素的向量(x1,x2,…xn),并使用下标来表示某个元素。
在Java中,除以下两点外,向量与数组完全相同。
- 一个向量是类java.util.Vector的实例。
- 一个向量的长度可以改变。
在Java中,Vector类几乎是重写的,它定义在java.util包中,类定义为。
public class Vector extends AbstractList implements List
{
public boolean add(Object object);
public boolean add(int index,Object object);
public boolean addAll(Collection collection);
public boolean addAll(int index,Collection collection);
public void addElement(Objcet object);
public void clear();
public Object clone();
public boolean contains\\(Object object);
public boolean containsAll(Collection collection);
public void copyInto(Object[] objects);
public Object elementAt(int index);
public boolean equals(Object object);
public Object firstElement();
public Object get(int index);
public int hashCode();
public int indexOf(Object object);
public int indexOf(Object object,int index);
public void insertElementAt(Object object,int index);
public boolean isEmpty();
public Object lastElement();
public int lastIndexOf(Object object);
public int lastIndexOF(Object object,int index);
public Object remove(int index);
public boolean remove(Object object);
public boolean removeAll(Collection collection);
public void removeAllElements();
public boolean removeElement(Object object);
public void removeElementAt(int index);
public boolean retainAll(Collection collection);
public Object set(int index,Object object);
public void setElementAt(Object object,int index):
public int size();
public List subList(int start,int stop);
public Object[] toArray();
public Object[] toArray(Object[] objects);
public String toString();
public Vector();
public Vector(Collection collection);
}
其中,add方法用于将新元素插入到向量之中,add(Object)和addElement(Object)方法具有相同的作用,区别在于add(object)有返回值,操作成功时,返回true,否则返回fasle。当没有指明要插入的新元素的位置时,缺省插入到向量的末端。
方法clear()使得向量为空,从而使向量的尺寸为0。注意一个空向量与一个空引用是不一样的,一个空向量仍是一个向量,向量对象依然存在。
方法clone()产生该向量的一个完整的复制品,因而向量所包含的对象也得到克隆。
方法contains用于确定某个对西那个是否是该向量的成员。
方法copyInto将向量中的元素拷贝到一个指定的数组。
方法elementAt()和get()与数组中的下标算子类似,返回给定索引位置的向量元素。
方法equals()进行向量对象的相等性测试,当两对象均为向量对象,且两向量中的对应元素均相等时,将返回真值。
方法fristElement()和lastElement()分别返回向量中的第一个和最后一个元素。
方法hashCode()为该向量对象返回一个标识数。
方法indexof实用顺序查找算法在向量中查找某个给定的对象,当在向量中找到该对象时,就返回对象在向量中的位置索引,否则返回-1。当该方法带两个参数时,就从指定的索引位置往后查找。
方法InsertElementAt()在指定位置将对象插入到向量,并使得前面的元素往前挪动。
方法lastIndexOf方法与indexof方法的不同之处在于该方法中的顺序查找算法的查找方向正好相反。
方法remove从向量中去掉一道多个元素,并使右边得剩余元素往左挪动,该方法的效果与InsertElementAt()方法正好相反。应当注意,用于插入元素的方法只有一个,但有6个remove方法,方法remove(index)和removeElementAt(index)除在返回值方面不同外,操作效果是一样的,前者在操作成功时返回去掉的对象(否则为null),而后者在操作成功时返回真值,没有成功时为假。
方法set(index,object)和setElementAt(object,index)均用给定的对象去替代index所标识的对象,这两个方法除了前者返回被替代的对象(操作不成功时返回null)外,具有相同的操作效果。
方法subList()返回一个list对象,该对象中的元素为向量中从start到top-1的top-start个元素。
方法toArray()返回一个Object[]数组,该数组中所包含的元素与向量中一致。不带参数的toArray()方法产生一个数组,并返回该数组,它的尺寸与向量相同。而带Object参数的toArray()方法在数组尺寸小于向量尺寸时与不带参数的方法是一样的,但当数组尺寸大于向量时,将向量中的元素拷入到数组的前部,并使数组中的其余元素为空。
方法toString()返回一个字符串,用于表示向量的内容。
例1 测试Java.util.Vector类
import java.util.*;
public class Ex0209
{
private static Vector v = new Vector();
private static Vector w = new Vector();
public static void main(String[] args)
{
String [] cities = {"Austin","Boston","Fresno","Toledo"};
v.addAll(Arrays.asList(cities));
System.out.println("v="+v);
v.add("Tuceson");
System.out.println("v="+v);
w = (Vector)v.clone();
System.out.println("w = "+w);
System.out.println("w.equals(v)="+w.equals(v));
v.set(3,"Ottowa");
System.out.println("v="+v);
System.out.println("w="+w);
System.out.println("w.equals(v)="+w.equals(v));
v.insertElementAt("London",3);
System.out.println("v="+v);
System.out.println("w="+w);
System.out.println("w.equals(v)"+w.equals(v));
w.removeElementAt(1);
w.removeElementAt(3);
w.remove("Fresno");
System.out.println("w="+w);
v.addAll(5,w);
System.out.println("v="+v);
System.out.println("v.indexOf(\"Austin\")="+v.indexOf("Austin"));
System.out.println("v.indexOf(\"Austin\",2)="+v.indexOf("Austin",2));
System.out.println("v.indexOf(\"Dublin\")="+v.indexOf("Dublin"));
}
}
该程序的输出为:
数组cities用于生成向量v,通过方法Arrays.asList()调用使得该数组成为List()对象,并调用带Collection参数(List是collection的子类)的Vector构造器产生向量v。System.out.println()方法通过调用向量的toString()方法来对向量内容进行输出。
通过调用v.add(“Tucson”)将该字符串添加到向量末尾,从而使向量尺寸加1。而方法v.clone()返回向量v的克隆,但作为一个Object类型,因此我们再用类型转换符(Vector)使之转换为Vector类型,并将其赋值给w。
方法equals()表明v和w是相等的,而调用v.set(3,”Ottawa”)将改变引用v所标识的对象,而不会改变w所标识的对象,从而表明这两个向量确实是独立的,而且相等。
从w中去掉3个元素后调用v.addAll(5,w)将w中从第五个元素开始的所有元素的拷贝插入到v中,最后,IndexOf()方法用于查找v中的元素。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima