Java中的向量| 带有示例的 Java 向量类

已发表: 2021-05-26

在编程中,最常用的数据结构之一是 Java 中的 Vector。 数组是可以线性存储数据的静态数据结构。 类似地,java中的vector也是线性存储数据的,但它们不限于固定大小。 相反,它的大小可以根据需要增加或缩小。 父类是 AbstractList 类,在 List 接口上实现。

在开始使用向量之前,请从 java.util.package 中导入它,如下所示:

导入 java.util.Vector

目录

声明和评估向量的元素

下面是如何在 java 中声明一个向量:

公共类 Vector<V> 扩展 AbstractList<V>

实现 List<V>、RandomAccess、Cloneable、Serializable

这里,V 是元素的类型,可以是 int、string、char 等。

就像我们访问数组中的数据成员一样,我们也可以通过使用元素的索引在向量中做到这一点。 例如,向量 E 的第二个元素可以作为 E[2] 访问。

在 java 中声明向量时出现的一些常见错误:

  • 如果向量的初始大小为负值,则会引发 IllegalArgumentException
  • 如果指定的集合为空,则抛出 NullPointerException
  • 向量的大小小于或等于向量的容量
  • 如果未指定向量增量,则容量在每个增量周期中翻倍

构造函数

1. 向量(int initialCapacity, int Increment)

这将在 java 中创建一个具有指定初始容量的向量,并且还指定了增量。 使用增量,指定每次向上调整向量大小时分配的元素数。

语法:Vector<V> e = new Vector<V>(int initialCapacity, int Increment);

2. 向量(int initialCapacity)

它在 java 中创建一个初始容量等于指定大小的向量。

语法:Vector<V> e = new Vector<V>(int initialCapacity);

3.向量()

它在 java 中创建一个初始默认容量为 10 的向量。

语法:Vector<V> e = new Vector<V>();

4.矢量(集合c)

它在 java 中创建一个向量,其元素是集合 c 的元素。

语法:Vector<V> e = new Vector<V>(Collection c);

下面是一个例子来演示java中向量的创建和使用:

代码

导入 java.util.*;

公共类主{

公共静态无效主要(字符串 [] 参数)

{

// 创建默认向量

向量 a = 新向量();

// 创建一个指定大小的向量

向量 b = 新向量 (20);

// 创建一个指定大小和增量的向量

向量 c = 新向量(30,10);

b.添加(100);

b.添加(200);

b.添加(300);

// 创建具有指定集合的​​向量

向量 d = 新向量(b)

System.out.println(“容量向量a” + a.capacity());

System.out.println(“向量b的容量” + b.capacity());

System.out.println(“容量向量c” + c.capacity());

System.out.println(“容量向量d” + d.capacity());

}}

输出

注意: .capacity() 用于返回向量的容量。

java中的向量具有三个受保护的参数,如下所示:

1. Int elementCount() - 它告诉向量包含的元素数量

2. Int capcityIncremen()- 当向量的大小变得大于容量时,容量会自动增加。

3. Object[] elementData()- 向量的元素存储在数组中。

方法

以下是java中一些常用的vector方法:

1.添加元素

Boolean add(Object o) - 一个元素被附加到向量的末尾

void add(int index V element)-给定的元素被添加到向量中的指定索引

在java中添加Vector元素的代码:

导入 java.util.*;

导入java.io.*;

公共类 AddElementsToVector {

公共静态无效主(字符串[] arg)

{

// 创建一个默认向量

向量 a = 新向量();

// 使用 add() 方法添加元素

a.添加(1);

a.添加(2);

a.add(“vect”);

a.add(“为”);

a.添加(3);

System.out.println(“向量 a 为 ” + a);

// 创建一个通用向量

向量<整数> b = 新向量<整数>();

b.添加(0);

b.添加(1);

b.添加(2);

System.out.println(“向量 b 为 ” + b);

}

}

输出

2.删除元素

Boolean Remove(object o) – 用于移除向量中指定索引处的元素

当元素被移除时,所有元素都向左移动以填充空格; 然后更新索引。

说明在 java 中从向量中删除元素的代码:

导入 java.util.*;

导入java.io.*;

公共类删除{

公共静态无效主(字符串[] arg)

{

// 创建一个默认向量

向量 a = 新向量();

// 使用 add() 方法添加元素

a.添加(1);

a.添加(2);

a.add(“vect”);

a.add(“为”);

a.添加(4);

// 移除元素

a.删除(2);

// 查看

System.out.println(“删除后:” + a);

}

}

输出

Checkout:如何在 Java 中取得成功?

3.改变元素

set() 方法可用于在添加元素后更改元素。 元素的索引可以被引用为向量被索引。 此方法采用索引和更新的元素。

在java中更改vector中元素的代码

导入 java.util.*;

公共类更新{

公共静态无效主(字符串参数 [])

{

// 创建一个空向量

向量<整数> a = 新向量<整数>();

// 添加元素

a.添加(1);

a.添加(2);

a.添加(3);

a.添加(10);

a.添加(20);

// 展示

System.out.println(“向量:” + a);

// 代替

System.out.println(“替换”

+ a.set(0, 22));

System.out.println(“替换”

+ a.set(4, 50));

// 显示修改后的向量

System.out.println(“新向量是:” + a);

}

}

输出

4. 迭代向量

有几种方法可以遍历向量。 其中之一是 get() 方法。 这是一个在 java 中迭代 Vector 中元素的程序:

导入 java.util.*;

公共类迭代{

公共静态无效主(字符串参数 [])

{

// 创建一个向量实例

向量<String> a = 新向量<>();

// 使用 add() 方法添加元素

a.add(“向量”);

a.add(“在”);

a.add(1, “java”);

// 使用 Get 方法和 for 循环

for (int i = 0; i < a.size(); i++) {

System.out.print(a.get(i) + ” “);

}

System.out.println();

// 用于每个循环

对于(字符串str:a)

System.out.print(str + ” “);

}

}

输出

阅读: Java 架构和组件

其他重要方法

  • Int size() – 用于返回向量的大小
  • Object get(int index) – 用于返回向量中指定位置的元素
  • Object firstElement() – 用于返回java中vector的第一个元素
  • Object lastElement() - 用于返回java中vector的最后一个元素
  • Boolean equals(Object o) -用于比较向量与给定对象是否相等。 如果所有元素在它们各自的索引处都为真,则返回真
  • void trimtosize() - 用于移除额外容量并保持容量等于大小

更多关于向量

  • Java中的向量是一种动态数据结构,可以使用整数索引进行访问。
  • 虽然类似于 ArrayList,但它是同步的,包含一些在集合框架中不可用的遗留方法。
  • 广告订单保持不变。
  • 它很少在非线程环境中使用。
  • 由于同步,向量在搜索、添加、更新和删除元素时性能较差。
  • 矢量类的迭代器快速失败并在并发修改的情况下抛出 ConcurrentModificationException。
  • 堆栈是其直接已知的子类。

向量中的内存分配

如上所示,向量没有定义的大小。 相反,java 中的向量可以动态改变其大小。 假设向量分配无限空间来存储元素。 然而,事实并非如此。 向量的大小根据两个字段“容量增量”和“容量”进行更改。

声明向量时,会分配一个等于大小的“容量”字段,并且可以添加等于容量的元素。 一旦插入下一个元素,数组的大小就会增加“容量增量”大小。 这使向量能够改变其大小——当插入新元素时,默认构造函数的容量加倍。

从世界顶级大学在线学习软件课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

Java中Vector的优点

向量的动态大小避免了内存浪费,并且我们的数据结构的大小可以在程序中间随时更改。

向量和 ArrayList 都是动态的。 但是,向量更有利,因为:

  • 向量是同步的。
  • 它有一些不能在 ArrayLists 上实现的遗留功能。

结论

Java 中的向量是一个没有大小限制的动态数组,它是自 Java 1.2 以来 Java 集合框架的一部分。 我们在这篇博客中看到了各种构造函数和常用的向量方法。 值得注意的是,Vector 类只能在线程安全的环境中使用。

如果您有兴趣了解有关 Java、OOP 和全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的软件开发执行 PG 计划 – 全栈开发专业化,专为工作专业人士设计,提供 500 多个小时严格的培训、9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

Java中的向量是什么?

向量是 Java 中的一种数据结构。 顾名思义,向量是一种元素序列。 它使用一个动态数组,该数组在访问时会增长和缩小。 它有一个 size() 方法来获取向量的当前大小和一个 capacity() 方法来获取向量的容量。 这两种方法返回大于零的值。 向量的容量是可以存储在向量内而无需分配新数组的元素的数量。 向量的大小是当前存储在向量内的元素的数量。

向量相对于数组有什么优势?

数组的大小是固定的,这意味着它们不能根据需要增长或缩小。 向量被实现为可动态调整大小的数组,允许它们根据需要增长和缩小。 这对于数据的持续增长很有用; 例如,逐行读取文本文件的程序将能够随着文件的大小而增长。 向量通常比数组更有效。 这是因为向量被实现为引用数组(java.lang.Objects),而数组被实现为对象数组。

Java 中的 ArrayList 是什么?

ArrayList 类表示一个动态数组。 它可以根据需要增长以适应新元素。 该数组实际上是作为对象引用的列表来实现的。 每当需要创建元素时,都会提供对新对象的引用。 这是可能的,因为 ArrayList 是作为可动态调整大小的列表实现的。 ArrayList 从 AbstractList 继承了它的大部分方法和字段。 ArrayList 比数组快,因为它不必创建新对象。 改变数组大小的变异方法(例如添加、设置和删除)被称为破坏性方法,因为它们会永久改变数组的大小。