java语言中的向量.doc

上传人:hs****ma 文档编号:551013437 上传时间:2022-10-26 格式:DOC 页数:6 大小:90.51KB
返回 下载 相关 举报
java语言中的向量.doc_第1页
第1页 / 共6页
java语言中的向量.doc_第2页
第2页 / 共6页
java语言中的向量.doc_第3页
第3页 / 共6页
java语言中的向量.doc_第4页
第4页 / 共6页
java语言中的向量.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《java语言中的向量.doc》由会员分享,可在线阅读,更多相关《java语言中的向量.doc(6页珍藏版)》请在金锄头文库上搜索。

1、JAVA 向量介绍向量(Vector)是java.util类包提供的一个工具类。它对应于类似数组的顺序存储的数据结构,但是具有比数组更强大的功能。它是允许不同类型元素共存的变长数组。每个Vector类的对象可以表达一个完整的数据序列。 Vector类的对象不但可以保存顺序的一列数据,而且还提供了许多有用的方法来操作和处理这些数据。 另外,Vector类对象所表达的序列中元素的个数是可变的,即Vector实现了变长数组。Java中的数组只能保存固定数目的元素,且必须把所有需要的内存单元一次性的申请出来,而不能先创建数组再追加数组元素数量,为了解决这个问题Java中引入了向量类Vector。Vec

2、tor也是一组对象的集合,但相对于数组,Vector可以追加对象元素数量,可以方便的修改和维护序列中的对象。向量比较适合在如下情况下使用: 1. 需要处理的对象数目不定,序列中的元素都是对象或可以表示为对象 2. 需要将不同类的对象组合成一个数据序列 3. 需要做频繁的对象序列中元素的插入和删除 4. 经常需要定位序列中的对象和其他查找操作 5. 在不同的类之间传递大量的数据 Vector类的方法相对于数组要多一些,但是使用这个类也有一定的局限性,例如其中的对象不能是简单数据类型等。(1) 创建向量类的对象 Vector类有三个构造方法:l Vector():构造一个空的向量。l Vector

3、(int capacity):以指定的存储容量构造一个空的向量。l Vector(int capacity, int capacityIncrement):以指定的存储容量和容量增量构造一个空的Vector。例如: Vector MyVector = new Vector(100,50); 这个语句创建的MyVector向量序列初始有100个元素的空间,以后一旦使用殆尽则以50为单位递增,使序列中元素的个数变化成150,200,。在创建Vector序列时,不需要指明序列中元素的类型,可以在使用时确定。(2) 向向量序列中添加元素: 有两种添加元素的方法: addElement( Object

4、obj) 将新元素添加到序列尾部。 insertElementAt(Object obj, int index) 将新元素插入到指定位置。下面是使用这两种方法的例子:Vector MyVector=new Vector();for (int i=1;i=10;i+) MyVector.addElement(new Integer(i);MyVector.insertElementAt(middle,5);例题import java.util.*; class aapublic static void main(String arg)Vector MyVector=new Vector();fo

5、r (int i=1;i=10;i+) MyVector.addElement(new Integer(i);MyVector.insertElementAt(middle,5);for (int i=0;i=10;i+) System.out.println(MyVector.elementAt(i);/main/class运行结果:12345middle678910(3) 修改或删除向量序列中的元素使用以下方法修改或删除向量序列中的元素: 1. setElementAt(Object obj,int index) 将向量序列index位置处的对象元素设置成为obj,如果这个位置原来有元素,

6、则被覆盖。 2. removeElement(Object obj) 删除向量序列中第一个与指定的obj对象相同的元素,同时将后面的元素前提,补上空位。这个方法返回的是布尔值。 3. removeElementAt(int index) 删除index指定位置处的元素,同时将后面的元素前提。4. removeAllElements() 清除向量序列中的所有元素。下例中先创建一个Vector,再删除掉其中的所有字符串对象“to”。Vector MyVector=new Vector(100);for (int i=0;i10;i+) MyVector.addElement(“welcome”);

7、 MyVector.addElement(“to”); MyVector.addElement(“beijing”);while (MyVector.removeElement(“to”);(4)查找向量序列中的元素 常用于查找向量序列中某元素的方法如下: 1.Object elementAt(int index) 返回指定位置处的元素。 一个要注意的问题:由于返回的是Object类型的对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。例如: String str=(String)MyVector.elementAt(0);2. boolean

8、 contains(Object obj) 检查向量序列中是否包含指定的对象元素obj。3. int indexOf (Object obj,int start_index) 从指定的start_index位置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回1。 4. int lastIndexOf(Object obj,int start_index) 从指定的start_index位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回1。例如:int i=0;While(i=MyVector.in

9、dexOf(“welcome”,i)!=-1) System.out.println(i); i+;(5)Vector中的其他方法capacity():返回Vector的容量 clone():建立Vector的备份copyInto(Object):把Vector中的元素拷贝到一个数组中firstElement():返回第一个元素lastElement():返回最后一个元素isEmpty():判断是否为空setSize(int size):设置Vector的大小size():返回Vector中元素的数量trimToSize():将Vector的容量下调至最小值 使用Vector时,一个需要特别注

10、意的问题就是要先创建后使用。如果不先使用new运算符利用构造函数创建Vector类的对象,而直接使用Vector的方法,如:addElement()等方法,则可能造成堆栈溢出或使用null指针等异常,妨碍程序的正常运行。例题:用向量实现,创建3个学生对象(学号、姓名、年龄)和4个教师对象(教工号、姓名、系别),并且输出。import java.util.*;class StuString xh; String xm;int nl;public Stu(String xh1,String xm1,int nl1)xh=xh1;xm=xm1;nl=nl1;void disp()System.out

11、.println(学生:+xh+ +xm+ +nl);class TechString zh;String xm;String xb;public Tech(String zh1,String xm1, String xb1)zh=zh1;xm=xm1;xb=xb1;void disp() System.out.println(教师:+zh+ +xm+ +xb);public class StuTerpublic static void main(String s)Vector st=new Vector();st.addElement(new Stu(101,李明,18);st.addEle

12、ment(new Stu(102,王大力,20);st.addElement(new Stu(103,刘萍,19);st.addElement(new Tech(10100,林小利,计算机);st.addElement(new Tech(10101,熊平,计算机);st.addElement(new Tech(10102,戴红兵,电力);st.addElement(new Tech(10103,曲小军,电力);for(int i=0;ist.size();i+) if(st.elementAt(i) instanceof Stu) ( (Stu)(st.elementAt(i) ).disp(

13、);else ( (Tech)(st.elementAt(i) ).disp();API 1.6.0 帮助说明:public class Vectorextends AbstractListimplements List, RandomAccess, Cloneable, SerializableVector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。 每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capa

14、city 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就减少了增加的重分配的量。 由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的:如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),则迭代器将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。Vector 的 elements 方法返回的 Enumeration 不是 快速失败的。 注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号