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 比数组快,因为它不必创建新对象。 改变数组大小的变异方法(例如添加、设置和删除)被称为破坏性方法,因为它们会永久改变数组的大小。