Java常用类库 之 向量类

mac2022-06-30  102

目录

三、向量类和枚举接口3.1 向量类3.1.1 构造方法3.1.2 常用方法向向量添加元素修改或删除向量中元素查找向量中元素访问向量中的元素向量大小的操作

三、向量类和枚举接口

3.1 向量类

java.util 包中提供了另一种类似于数组的顺序存储的动态数据结构——Vector类。

数组是一种顺序存储的数据结构,但数组只能保存固定数目的元素,数组对象一旦创建,其元素的个数即数组的大小不能被修改。

Vector 类是一组对象的集合,且能够动态的调整自身大小。

向量类优越于数组的主要原因:使用向量是无需声明上限,而且随着存储元素增多,向量的存储空间会自动增加;另外,向量类还提供了许多操作和处理向量元素的方法。

注意:添加到 Vector 中的数据元素必须是引用类型。如果需要把基本数据类型保存到向量,必须使用 Java 的包装类转换成对象。

3.1.1 构造方法

(1)public Vector() 创建一个向量。其原始容量为0. (2)public Vector(int capacity) 创建一个指定初始容量的向量。 (3)public Vector(int capacity,int capacityIncrement) 创建一个指定初始容量的向量,并且他的容量增量由参数 capacityIncrement 指定。向量容量通常是一个大于向量实际元素个数的整数,容量增量则规定了每当向量元素达到一定数量时,需一次性扩充的向量容量大小。如果容量增量参数为0,则每次向量容量都将增加一倍大小。

3.1.2 常用方法

一旦创建了向量类的实例,就可以用它的方法来执行插入、删除及查找对象等操作。向量类提供了极为丰富的方法,下面是其中一些主要的方法。

向向量添加元素

(1)public void addElement(Object obj) 把给定对象增加到向量末尾。 (2)public void insertElement(Object obj,int index)

把对象 obj 插入在序列的指定位置 index 处。如果试图在一个不存在的位置上插入一个元素,则会产生ArrayIndexOutOfBoundsException异常。

修改或删除向量中元素

(1)public void setElementAt(Object obj,int index)

将向量序列中index位置的元素设置为 obj,此位置的原有对象丢失,向量序列中其他元素的位置不变;若指定位置不存在,抛出ArrayIndexOutOfBoundsException异常。

(2)public void removeElementAt(int index)

删除向量序列中指定位置 index 处的元素,同时后面所有元素前移一个位置;若指定位置不存在,抛出ArrayIndexOutOfBoundsException异常。

(3)public boolean removeElement(Object obj)

删除向量序列中第一个与指定对象 obj 相同的元素,同时后面所有元素前移一个位置;若删除对象不存在,则返回 false,否则为 true。

(4)public void removeAllElements() 删除向量序列中所有的元素。

查找向量中元素

(1)public Object elementAt(int index) 返回指定位置 index 处的对象。 注意由于返回的是 Object 对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成 Object 类的某个具体子类的对象。例如: String str = (String)MyVector.elementAt(0).

(2)public int indexOf(Object obj) 从向量序列中返回指定对象 obj 的下标;若对象不存在,返回-1。

(3)public int indexOf(Object obj,int start_index) 从指定位置开始向后搜索,返回所找到的第一个与指定对象 obj 相同元素的下标;若未找到,返回-1。

访问向量中的元素

(1)public Object firstElement() 返回向量的第一个元素;若向量为空,抛出 NoSuchElementException 异常。 (2)public Object lastElement() 返回向量的最后一个元素;若向量为空,抛出 NoSuchElementException 异常。 (3)public boolean isEmpty() 判断向量中是否有元素;若向量不包括任何元素,返回 true,否则返回 false。 (4)public Enumeration elements() 返回包含 Vector 中所有元素的枚举对象。

向量大小的操作

向量大小有两个概念:一个是存储向量中实际元素的个数;另一个是向量的最大容量。 (1)public void trimToSize() 把向量容量调整到正好等于向量元素个数,以压缩向量的存储空间。 (2)public void setSize(int newSize) 设置向量大小。如果所给参数比原来向量的元素个数少,则向量被压缩,多余的元素将被截断;如果所给参数比原来向量个数多,则新增的向量元素将置为 null。 (3)public int capacity() 返回向量容量大小。 (4)public int size() 返回向量中的元素个数。

例题:首先创建存放三位学生信息的向量,然后,再把这三个向量添加到一个向量中,最后进行有关向量的元素访问、删除和插入操作。

import java.util.*; public class Test{ public static void main(String[] args){ Vector v = new Vector(); //建立两个存放学生信息的向量 Vector v1 = new Vector(); v1.addElement("张三"); v1.addElement(new Character('男')); v1.addElement(new Integer(18)); Vector v2 = new Vector(); v2.addElement("黄小华"); v2.addElement(new Character('女')); v2.addElement(new Integer(17)); //将两个学生向量添加到向量v中 v.addElement(v1); v.addElement(v2); //输出向量v中的信息 System.out.println(v); System.out.println("向量元素个数:"+v.size()); System.out.println("向量当前容量:"+v.capacity()); //删除向量v中的第二个元素v2 v.removeElementAt(1); System.out.println(v); Vector v3 = new Vector(); v3.addElement("李军"); v3.addElement(new Character('男')); v3.addElement(new Integer(18)); v.insertElementAt(v3,1); System.out.println(v); } }

输出结果:

最新回复(0)