java语言中的向量

上传人:碎****木 文档编号:220860876 上传时间:2021-12-09 格式:DOCX 页数:6 大小:55.64KB
返回 下载 相关 举报
java语言中的向量_第1页
第1页 / 共6页
java语言中的向量_第2页
第2页 / 共6页
java语言中的向量_第3页
第3页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

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

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

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

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

5、 Vector(); for (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运行结果:12345middle 678910(3) 修改或删除向量序列中的元素使用以下方法修改或删除向量序列中的元素:1. setElementAt(Object obj,int index)将向量序列 index 位置处的对象元素设置成为

6、 obj,假设这个位置原来有元素,那么被掩盖。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.addEl

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

8、ntAt(0);2. boolean 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。例如:in

9、t i=0;While(i=MyVector.indexOf(“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(

10、):将 Vector 的容量下调至最小值使用 Vector 时,一个需要特别留意的问题就是要先创立后使用。假设不先使用new 运算符利用构造函数创立 Vector 类的对象,而直接使用 Vector 的方法,如: addElement()等方法,那么可能造成堆栈溢出或使用 null 指针等特别,阻碍程序的正常运行。例题:用向量实现,创立 3 个同学对象学号、姓名、年龄和 4 个教师对象教工号、姓名、系别,并且输出。import java.util.*; class StuString xh;String xm;int nl; public Stu(String xh1,String xm1,i

11、nt nl1)xh=xh1;xm=xm1;nl=nl1;void disp()System.out.println(“同学:“+xh+“+xm+“+nl);class TechString zh; String xm; String xb;public Tech(String zh1,String xm1,zh=zh1;xm=xm1;xb=xb1; void disp()String xb1)System.out.println(“教师:“+zh+“+xm+“+xb);public class StuTerpublic static void main(String s) Vector st=

12、new Vector();st.addElement(new Stu(“101“,“李明“,18);st.addElement(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“,“曲小军“,“电力“); f

13、or(int i=0;ist.size();i+) if(st.elementAt(i) instanceofStu)( (Stu)(st.elementAt(i) ).disp();else( (Tech)(st.elementAt(i) ).disp();API 1.6.0 挂念说明: public class Vector extends AbstractListimplements List, RandomAccess, Cloneable, SerializableVector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进展访问的组件。但是,Vector 的大小可

14、以依据需要增大或缩小,以适应创立Vector 后进展添加或移除项的操作。每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储治理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,由于随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就削减了增加的重安排的量。由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的: 假设在迭代器创立后的任意时间从构造上修改了向量通过迭代器自身的 remove 或 add

15、方法之外的任何其他方式,那么迭代器将抛出ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。Vector 的elements 方法返回的 Enumeration 不是 快速失败的。留意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不行能作出任何坚决的保证。快速失败迭代器尽最大努力抛出ConcurrentModificationException。因此,编写依靠于此特别的程序的方式是错误的,正确做法是:迭代器的快速失败行为应当仅用于检测bug。从 Java 2 平台 v1.2 开头,此类改进为可以实现 List 接口,使它成为 Java Collections Framework 的成员。与新

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

当前位置:首页 > 行业资料 > 教育/培训

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