九. 常用类库、向量与哈希5.向量及其应用

Vector(向量)是 java.util 包中的一个类,该类实现了类似动态数组的功能。

向量和数组相似,都可以保存一组数据(数据列表)。但是数组的大小是固定的,一旦指定,就不能改变,而向量却提供了一种类似于“动态数组”的功能,向量与数组的重要区别之一就是向量的容量是可变的。

可以在向量的任意位置插入不同类型的对象,无需考虑对象的类型,也无需考虑向量的容量。

向量和数组分别适用于不同的场合,一般来说,下列场合更适合于使用向量:

  • 如果需要频繁进行对象的插入和删除工作,或者因为需要处理的对象数目不定。
  • 列表成员全部都是对象,或者可以方便的用对象表示。
  • 需要很快确定列表内是否存在某一特定对象,并且希望很快了解到对象的存放位置。

向量作为一种对象提供了比数组更多的方法,但需要注意的是,向量只能存储对象,不能直接存储简单数据类型,因此下列场合适用于使用数组:

  • 所需处理的对象数目大致可以确定。
  • 所需处理的是简单数据类型。

向量的使用

向量必须要先创建后使用,向量的大小是向量中元素的个数,向量的容量是被分配用来存储元素的内存大小,其大小总是大于向量的大小。下面是 Vector 的构造方法:

  1. Vector(); //①创建空向量,初始大小为 10
  2. Vector(int initialCapacity); //②创建初始容量为 capacity 的空向量
  3. Vector(int initialCapacity,int capacityIncrement); //③创建初始容量为 initialCapacity,增量为 capacityIncrement 的空向量

使用第①种方式系统会自动对向量进行管理。

使用第②种方式,会创建一个初始容量(即向量可存储数据的大小)为 initialCapacity 的空向量,当真正存放的数据超过该容量时,系统会自动扩充容量,每次增加一倍。

使用第③中方式,会创建一个初始容量为 initialCapacity 的空向量,当真正存放的数据超过该容量时,系统每次会自动扩充 capacityIncrement。如果 capacityIncrement 为0,那么每次增加一倍,。

通过分配多于所需的内存空间,向量减少了必须的内存分配的数目。这样能够有效地减少分配所消耗的时间,每次分配的额外空间数目将由创建向量时指定的增量所决定。

除了构造方法外,向量类还提供了三个属性变量,分别为:

  1. protected int capacityIncrement; //当向量大小不足时,所用的增量大小
  2. protected int elementCount; //向量的元素个数
  3. protected Object elementData[]; //向量成员数据所用的缓冲

一旦创建了Vector类的实例,就可以用其方法来执行插入、删除以及查找对象等操作,向量类提供了极为丰富的方法,下表给出了一些常用的方法:

方法 功能
void addElement(Object element) 将给定对象 element 增加到向量末尾
int capacity() 返回向量容量
boolean contains(Object element) 若向量中包含了 element 返回 true,否则返回 false
void copyInto(Object Array[]) 将向量元素复制到指定数组
synchronized Object elementAt(int index) 返回指定下标的元素,若下标非法,抛出 ArrayIndexOutOfBoundsExecption 异常
void ensureCapacity(int size) 将向量的最小容量设为 size
synchronized Object firstElement() 返回向量的第一个元素,若向量为空,抛出 NoSuchElementException 异常
int indexOf(Object element) 返回 element 的下标,若对象不存在返回-1
int indexOf (Object element,int start) 从指定位置(start)开始搜索向量,返回对象所对应的下标值,若未找到返回-1
void insertElementAt (Object obj,int index) 将给定的对象插入到指定的下标处
boolean isEmpty() 若向量不包括任何元素,返回 true,否则返回 false
synchronized Object lastElement() 返回向量的最后一个元素,若向量为空,抛出 NoSuchElementException 异常
int lastIndexOf(Object element) 从向量末尾向前搜索向量,返回对象的下标值
int lastIndexOf(Object element,int start) 从指定位置开始向前搜索向量,返回给定对象的下标值,若未找到返回-1
void removeAllElements() 删除向量中的所有对象,向量变成空向量
boolean removeElement(Object element) 从向量中删除指定对象 element,若给定的对象在向量中保存多次,则只删除其第一个实例,如果删除成功,返回 true,如果没发现对象,则返回 false
void removeElementAt(int index) 删除由 index 指定位置处的元素
void setElementAt(Object obj,int index) 将给定对象存放到给定下标处,该下标处的原有对象丢失
void setSize(int size) 将向量中的元素个数设为 size,如果新的长度小于原来的长度,元素将丢失,若新的长度大于原来的长度,则在其后增加 null 元素
int size() 返回向量中当前元素的个数
String toString() 将向量转换成字符串
void trimToSize() 将向量的容量设为与当前拥有的元素个数相等

与数组相同,向量对象也可以通过 new 操作符实现。其语句为:
    Vector vector=new Vector www.juhongyulept.com ();

时间: 2024-09-30 19:05:26

九. 常用类库、向量与哈希5.向量及其应用的相关文章

九. 常用类库、向量与哈希6.哈希表及其应用

哈希表也称为散列表,是用来存储群体对象的集合类结构. 什么是哈希表 数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系.当要查找一个对象时,只能以某种顺序(如顺序查找或二分查找)与各个元素进行比较,当数组或向量中的元素数量很多时,查找的效率会明显的降低. 一种有效的存储方式,是不与其他元素进行比较,一次存取便能得到所需要的记录.这就需要在对象的存储位置和对象的关键属性(设为 k)之间建立一个特定的对应关系(设为 f),使每个对象与一个唯一的存储位置

如鹏网学习笔记(四).Net常用类库

.Net常用类库 一.String成员方法(常用) 1,bool Contains(string str) 判断字符串对象是否包含给定的内容 2,bool StartsWith(String str):判断字符串对象是否以给定的字符串开始. 3,bool EndsWith(String str):判断字符串对象是否以给定的字符串结束. 案例:判断是否是网址:以http://开头.以.com或者.cn结尾. 案例:判断用户输入的邮件是否是QQ邮箱,用户输入的用户名是否包含"毛ze东"等敏

[JAVA_开课吧资源]第三周 常用类库、异常处理

主题一 常用类库 » 类库中常用的包 Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能. [请点击查看更多内容 转自CSDN博客XXX的专栏] » Object类的一些常用方法 hashCode:public int hashCode()返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表 equals:public boolean equals(Object obj)指示某个其他对象是否与此对象“相等” toStr

一个老师程序员说:这是学Java 必知必会的 20 种常用类库和 API

一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不是重复造轮子".在本文中,我将分享一些Java开发人员应该熟悉的最有用的和必要的库和API.顺便说一句,这里不包括框架,如Spring和Hibernate因为他们非常有名,都有特定的功能.最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时

.NET常用类库知识总结

常用类库之.NET中的字符串 字符串的特性 1.不可变性 由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本).之所以发生改变只是因为指向了一块新的地址. 2.字符串池(只针对字符串常量) 当一个程序中有多个相同的字符串常量时,多个变量指向的是内存中同一块字符串!这个特性叫字符串池.之所以字符串,不会造成程序混乱,是因为字符串的不可变性. String的成员方法和属性 PS:这里重载方式很多,不一一列举. 1.Contains(String str)  判

Android之常用类库

Android之常用类库 android.app :提供高层的程序模型.提供基本的运行环境android.content :包含各种的对设备上的数据进行访问和发布的类android.database :通过内容提供者浏览和操作数据库android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上 .android.location :定位和相关服务的类android.media :提供一些类管理多种音频.视频的媒体接口android.net :提供帮助网

Java之常用类库

1.Java常用类库(一):http://blog.csdn.net/e6894853/article/details/7925469 1.Java常用类库(二):http://blog.csdn.net/e6894853/article/details/7925474

Google的Java常用类库 Guava资料

java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子了.这东西怎么用,看看官网的文档和API.英文不好的,也有网上翻译出来共享的.开始Guava之旅猛击下面的链接 官方地址:http://code.google.com/p/guava-libraries/  [大家都知道这个要FQ哦,windows下推荐ziyoumen软件] 官方翻译文档:http

常用类库之.NET(转)

常用类库之.NET中的字符串 字符串的特性 1.不可变性 由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本).之所以发生改变只是因为指向了一块新的地址. 2.字符串池(只针对字符串常量) 当一个程序中有多个相同的字符串常量时,多个变量指向的是内存中同一块字符串!这个特性叫字符串池.之所以字符串,不会造成程序混乱,是因为字符串的不可变性. String的成员方法和属性 PS:这里重载方式很多,不一一列举. 1.Contains(String str)  判