详解Java编程中向量(Vector)的应用

作者:goldensun 时间:2021-05-31 18:14:27 

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

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

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

向量和数组分别适用于不同的场合,一般来说,下列场合更适合于使用向量:
如果需要频繁进行对象的插入和删除工作,或者因为需要处理的对象数目不定。
列表成员全部都是对象,或者可以方便的用对象表示。
需要很快确定列表内是否存在某一特定对象,并且希望很快了解到对象的存放位置。

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

  • 所需处理的对象数目大致可以确定。

  • 所需处理的是简单数据类型。

向量的使用

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


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


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

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

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

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

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


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


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

详解Java编程中向量(Vector)的应用
详解Java编程中向量(Vector)的应用
与数组相同,向量对象也可以通过 new 操作符实现。其语句为:


 Vector vector=new Vector();
标签:Java
0
投稿

猜你喜欢

  • springboot结合maven配置不同环境的profile方式

    2022-05-28 12:00:16
  • Java 类与对象超基础讲解

    2023-06-12 00:03:22
  • C# 获取动态key的json对象的值案例

    2023-03-03 22:02:08
  • 分享几个Java工作中实用的代码优化技巧

    2023-11-28 12:04:50
  • 全面理解java中的异常处理机制

    2023-10-26 04:08:20
  • C#将布尔类型转换成字节数组的方法

    2023-06-21 15:30:16
  • Java实现多任务执行助手

    2023-05-17 14:15:30
  • idea +junit单元测试获取不到bean注入的解决方式

    2022-12-09 05:59:27
  • 一文搞懂Java中的序列化与反序列化

    2021-11-22 00:26:45
  • 详解C# 不能用于文件名的字符

    2023-03-05 07:44:45
  • Lombok 的@StandardException注解解析

    2022-09-16 23:37:19
  • Mybatis + js 实现下拉列表二级联动效果

    2022-09-14 03:43:06
  • Java界面编程实现界面跳转

    2023-11-12 00:56:45
  • Springboot中如何使用Jackson

    2021-07-29 03:27:34
  • Entity Framework代码优先(Code First)模式

    2022-07-28 05:31:05
  • Kotlin实现图片选择器的关键技术点总结

    2023-03-05 02:31:57
  • 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸

    2023-11-07 15:56:41
  • Cocos2d-x 3.0多线程异步加载资源实例

    2022-02-08 03:26:51
  • 学生视角看Java 面向对象的继承本质

    2022-04-23 21:51:10
  • java中hasNextInt判断后无限循环输出else项的解决方法

    2023-11-15 10:12:44
  • asp之家 软件编程 m.aspxhome.com