您的位置:首页 > 编程语言 > Java开发

编程学习笔记之Java相关vector向量的介绍

2017-02-20 16:08 302 查看
在Java中,有一个包叫java.util,它是一个保存着各种常用工具类的类库,其中就包括向量(vector)。向量是一种类似数组的顺序存储的数据结构,但是它的功能比数组强大的多。比如,Vector类的对象是允许不同类型大小的元素共存的变长数组,Vector类的对象不但可以保存数据,而且还封装了很多方法来操作这些数据;再比如,创建数组时需要事先声明大小,但Vector不需要,因为它是可以在运行时动态增长或缩小的,总的来说,相比数组,如下情况更适合使用Vector:

1):需要处理的对象数目不定,序列中的元素都是对象或可以表示为对象。

2):需要将不同类型的对象组合成一个序列。

3):需要对对象中的元素做频繁的插入和删除。

4):经常需要定位序列中的对象或其它查找操作。

5):在不同类之间传递大量的数据。

如果上面的不好记,那么只需这样想就可以了:当我们的序列内的元素是简单的內建类型,如int、double等时,那么我们就使用数组,否则使用Vector。

1、Vector向量类对象的创建

首先介绍Vector向量类常用的构造函数:

第一种

public Vector(); //创建一个响亮对象,默认容量是10个元素。


第二种
public Vector(int initCapacity, int capacityIncrement);
/*这个构造函数的第一个参数initCapacity,表示创建的Vector对象的初始容量【元素数目】;而第二个参数capacityIncrement,表示如果我们创建的这个vector容量不够了,那么扩充时应该一次填充多少个多少个元素*/

//比如我们看下面的例子
Vector MyVector = new Vector(100,50);
//上面的代码意思是,创建一个MyVector向量容器,初始容量为100个元素,如果在以后的运行中该容器使用完,那么就以50个元素大小来递增扩充,比如变成150、200、250等


2、如何对向量容器添加元素

Vector类有两个方法对向量序列添加元素:

1):

addElement( Object obj ); // 在向量序列的尾部添加新元素。
2):
insertElement( Object obj, int index ); // 在向量序列中的指定位置index处插入新元素obj


下面这个就是使用上述两种方法的例子代码:

Vector MyVector = new Vector(); //创建了一个10个元素大小的Vector向量容器

for( int i=0; i<100; i++ ){
MyVector.addElement( new MyComplex(0.0, 0.0) ); //其中的MyComplex是我们随便做的一个复数类
}

MyVector.insertElement( new MyComplex(1.0, 2.0), 50 ); //在这里我们向第50个位置插入一个新的MyComplex元素
在上面的程序中,我们首先创建一个Vector,里面啥都没有,然后在循环体中,我们增加了一百个MyComplex类元素,最后我们又在中间插入一个新元素,所以最后MyVector的大小是101个元素!

3,、修改或删除向量序列中的元素

如果我们要修改(覆盖)容器序列中的某个元素,可以参考如下方法:

void setElementAt( Object obj, int index ); //将向量序列中index出的元素改换成obj

如果我们要删除序列中的某个元素,可以参考这个方法:

void removeElementAt(int index); //产出容器序列中第index出的元素,然后把它后面所有的元素往前挪一个,以便补齐

如果我们要删除序列容器中和obj相同的元素,可以参考这个方法:

boolean removeElement( Object obj ); //删除容器序列中第一个与obj相同的元素,然后将后面所有的元素前移,如果没找到与obj相同的元素,即没有删除任何东西,那么该方法返回FALSE,否则返回TRUE。

如果我们要删除容器中所有的元素,可以参考如下方法:

void removeAllElement();


比如下面的程序代码,首先创建一个Vector,然后删除所有的字符串“to”:

Vector MyVector = new Vector(); //创建一个由10个元素大小的空Vector

for( int i=0; i<10; i++ ){
MyVector.addElement("Welcome");
MyVector.addElement("to");
MyVector.addElement("Java");
}

while( MyVector.removeElement("to") );


4、查找向量序列中的元素
常用于查找序列中元素的方法如下:

Object elementAt( int index );
该方法返回指定位置index处的元素,需要注意的是,由于返回的是所有类的父类Object,所以在使用之前通常要进行强制类型转换,以便将返回的对象引用转换成我们需要的类型,例如下面的使用例子:

String str = (String)MyVector.elementAt(5); //将第5个元素返回,然后转换成String赋值给我们的str


如果要检查容器序列中是否包含我们指定的元素obj,可以参考如下方法:

boolean contains(Object obj); //看看是否有obj,如果有,返回TRUE,否则返回FALSE


如果我们要从一个指定位置处向后搜索,然后返回找到的第一个obj元素,那么可以参考如下方法:

int indexOf( Object obj, int start_index ); //其中的start_index,就是我们要开始寻找的位置,如果没有找到对象obj,那么该方法返回-1

如果我们要从一个指定位置处向前搜索,然后返回第一个obj元素【即到达指定位置前最后的那个obj元素】位置,那么可以参考如下方法:

int lastIndexOf( Object obj, int start_index ); //如果没有找到对象obj,那么该方法返回-1


让我们接上一段示例代码,写下下面的代码,该程序将寻找序列容器中所有未“Welcome”的元素并将它们的位置输出:

...

int i=0;
while( (i = MyVector.indexOf( "Welcome", i)) != -1 )
System.out.println( i );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vector 向量 复数