编程学习笔记之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向量类常用的构造函数:
第一种
第二种
2、如何对向量容器添加元素
Vector类有两个方法对向量序列添加元素:
1):
下面这个就是使用上述两种方法的例子代码:
3,、修改或删除向量序列中的元素
如果我们要修改(覆盖)容器序列中的某个元素,可以参考如下方法:
如果我们要删除序列中的某个元素,可以参考这个方法:
如果我们要删除序列容器中和obj相同的元素,可以参考这个方法:
如果我们要删除容器中所有的元素,可以参考如下方法:
比如下面的程序代码,首先创建一个Vector,然后删除所有的字符串“to”:
4、查找向量序列中的元素
常用于查找序列中元素的方法如下:
如果要检查容器序列中是否包含我们指定的元素obj,可以参考如下方法:
如果我们要从一个指定位置处向后搜索,然后返回找到的第一个obj元素,那么可以参考如下方法:
如果我们要从一个指定位置处向前搜索,然后返回第一个obj元素【即到达指定位置前最后的那个obj元素】位置,那么可以参考如下方法:
让我们接上一段示例代码,写下下面的代码,该程序将寻找序列容器中所有未“Welcome”的元素并将它们的位置输出:
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 );
相关文章推荐
- 编程学习笔记之Java相关:包的概念和使用
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简单介绍
- DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)
- 编程学习笔记之Java相关:接口(interface)的概念与使用
- java多线程学习笔记——相关名词介绍
- 编程学习笔记之c++相关::dynamic_cast介绍
- DirectX 11游戏编程学习笔记之2: 第1章Vector Algebra(向量代数)
- 编程学习笔记之c++相关::vector学习心得
- 编程学习笔记之java相关::内存回收原理
- Java学习笔记(七、网络编程基础)
- JAVA 编程思想 第4版 学习笔记 - 第五章
- 很不错的JAVA学习笔记-Java基础-Java-编程开发
- java网络编程学习笔记
- 传智博客学习笔记4--JAVA编程基础1
- JAVA与模式 学习笔记(一) 统一的建模语言UML介绍(1
- Java UDP 网络编程 示例 -Java学习笔记(30)
- Java面对对象编程---学习笔记(JAVA语言基础)
- java学习笔记(一)--编程规范和技巧总结
- [学习笔记]JAVA的多线程同步编程(非OOP)
- Java 学习笔记 (8) - GUI编程之 Frame