Java中的Vector:集合框架中的瑰宝!

《Java零基础教学》是一套深入浅出的 Java 编程入门教程。全套教程从Java基础语法开始,适合初学者快速入门,同时也从实例的角度进行了深入浅出的讲解,让初学者能够更好地理解Java编程思想和应用。

本教程内容包括数据类型与运算、流程控制、数组、函数、面向对象基础、字符串、集合、异常处理、IO 流及多线程等 Java 编程基础知识,并提供丰富的实例和练习,帮助读者巩固所学知识。本教程不仅适合初学者学习,也适合已经掌握一定 Java 基础的读者进行查漏补缺。

前言

在日常的Java开发中,经常需要使用到集合框架中的各种数据结构来处理数据。而Vector作为Java集合框架中的一员,也是非常重要的一种数据结构,本文将详细介绍Vector的使用。

摘要

本文主要介绍Java集合框架中的Vector,包括Vector的概念、创建Vector对象、向Vector中添加元素、从Vector中获取元素、Vector的常用方法、Vector的优缺点、测试用例等内容。

内容

1. Vector的概念

Vector是Java集合框架中的一种动态数组(Dynamic Array),它可以根据需要进行扩容或减少容量。与传统的数组不同,Vector的容量可以根据需要自动增长或减少。Vector类实现了List接口,能够存储任意类型的对象。

2. Vector类的构造函数

在使用Vector类之前,先看看Vector类的构造函数:

java 复制代码
public Vector()
public Vector(int initialCapacity)
public Vector(int initialCapacity, int capacityIncrement)
public Vector(Collection<? extends E> c)
 
  • public Vector():创建一个默认大小为10的空向量。
  • public Vector(int initialCapacity):创建一个指定大小的空向量。
  • public Vector(int initialCapacity, int capacityIncrement):创建一个具有指定初始容量和指定容量增量的空向量。
  • public Vector(Collection<? extends E> c):创建一个包含给定集合元素的向量,按照集合的迭代器返回的顺序。

3. 创建Vector对象

在Java中创建Vector对象非常简单,只需使用Vector类的构造函数即可。

java 复制代码
Vector<Object> v1 = new Vector<Object>(); //创建一个空的Vector对象
Vector<Object> v2 = new Vector<Object>(10); //创建一个指定容量的Vector对象
Vector<Object> v3 = new Vector<Object>(10, 5); //创建一个指定容量和增量的Vector对象

在上述代码中,第一个Vector对象v1是不带参数的,默认的初始容量为10,增量为0;第二个Vector对象v2指定了初始容量为10,没有指定增量;第三个Vector对象v3指定了初始容量为10,增量为5。

4. 向Vector中添加元素

向Vector中添加元素非常简单,可以使用add()、addElement()、addAll()等方法。

java 复制代码
Vector<Object> v = new Vector<Object>();

//使用add()方法添加元素
v.add("Hello");
v.add("World");

//使用addElement()方法添加元素
v.addElement(new Integer(100));

//使用addAll()方法添加元素
ArrayList<Object> list = new ArrayList<Object>();
list.add("Java");
list.add("Python");
v.addAll(list);

在上述代码中,使用add()方法添加了两个字符串元素,使用addElement()方法添加了一个整数元素,使用addAll()方法添加了一个ArrayList集合中的元素。

5. 从Vector中获取元素

从Vector中获取元素也非常简单,可以使用get()方法直接获取元素,也可以使用elementAt()、firstElement()、lastElement()等方法获取第一个、最后一个或指定位置的元素。

java 复制代码
Vector<String> v = new Vector<String>();
v.add("Java");
v.add("Python");
v.add("C++");

//使用get()方法获取元素
String s1 = v.get(0); //获取第一个元素
String s2 = v.get(1); //获取第二个元素

//使用elementAt()方法获取元素
String s3 = v.elementAt(2); //获取第三个元素

//使用firstElement()方法获取第一个元素
String s4 = v.firstElement();

//使用lastElement()方法获取最后一个元素
String s5 = v.lastElement();

在上述代码中,使用get()方法分别获取了第一个元素和第二个元素,使用elementAt()方法获取了第三个元素,使用firstElement()方法获取了第一个元素,使用lastElement()方法获取了最后一个元素。

6. Vector的常用方法

Vector类提供了很多常用的方法,如增加、删除、查找、排序等操作。

增加方法:

  • public boolean add(E e):将指定的元素添加到此向量的末尾。
  • public void add(int index, E element):将指定的元素插入到此向量中的指定位置。
  • public boolean addAll(Collection<? extends E> c):将指定集合中的所有元素追加到此向量的末尾。
  • public boolean addAll(int index, Collection<? extends E> c):将指定集合中的所有元素插入到此向量中的指定位置。

删除方法:

  • public void clear():从此向量中删除所有元素。
  • public boolean remove(Object o):从此向量中删除第一次出现的指定元素(如果存在)。
  • public E remove(int index):删除此向量中指定位置处的元素。
  • public boolean removeAll(Collection<?> c):从此向量中删除那些在指定集合中也出现的所有元素。
  • protected void removeRange(int fromIndex, int toIndex):从此列表中删除所有索引为fromIndex(包括)和toIndex(不包括)之间的元素。

查找方法:

  • public E get(int index):返回此向量中指定位置处的元素。
  • public int indexOf(Object o):返回此向量中第一次出现指定元素的索引,如果此向量不包含该元素,则返回-1。
  • public int lastIndexOf(Object o):返回此向量中最后一次出现指定元素的索引,如果此向量不包含该元素,则返回-1。

排序方法:

java 复制代码
void sort(Comparator<? super E> c) //使用指定的比较器对Vector进行排序
void sort() //按照元素的自然顺序对Vector进行排序

7. Vector的优缺点

Vector的优点:

  • 可以动态增长或减少容量。
  • 可以存储任意类型的对象。
  • 支持多线程并发操作,可以使用Enumeration或Iterator等方法遍历Vector集合。

Vector的缺点:

  • 当需要插入或删除元素时,需要移动其他元素,效率较低。
  • Vector中所有元素都是Object类型,获取元素时需要进行强制类型转换。
  • Vector在多线程并发操作时会存在同步问题,需要使用同步关键字或线程安全的集合类代替。

8. 测试用例

8.1 创建一个空的Vector对象

测试代码如下:

java 复制代码
package com.example.demo.javaTest.listTest;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Vector;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class VectorTest {

    //创建Vector
    @Test
    public void testCreateEmptyVector() {
        //创建一个空的Vector对象
        Vector<Object> v1 = new Vector<Object>();
        System.out.println("v1的容量:" + v1.capacity());
    }
}

测试用例执行截图如下:

8.2 创建一个指定容量的Vector对象

测试代码如下:

java 复制代码
    //创建一个指定容量的Vector对象
    @Test
    public void testCreateVector() {
        Vector<Object> v2 = new Vector<Object>(5);
        System.out.println("v2的容量:" + v2.capacity());
    }

测试用例执行截图如下:

8.3 向Vector中添加元素

测试代码如下:

java 复制代码
    //向Vector中添加元素
    @Test
    public void testVector() {

        Vector<Object> v1 = new Vector<Object>();
        v1.add("Hello");
        v1.add("World");
        v1.addElement(new Integer(100));
        System.out.println("v1的元素:" + v1);
    }

测试用例执行截图如下:

8.4 从Vector中获取元素

测试代码如下:

java 复制代码
    //从Vector中获取元素
    @Test
    public void testGetVector() {
        Vector<Object> v1 = new Vector<Object>();
        v1.add("Hello");
        v1.add("World");
        v1.addElement(new Integer(100));
        System.out.println("v1的元素:" + v1);

        System.out.println("v1的第一个元素:" + v1.firstElement()); //Hello
        System.out.println("v1的最后一个元素:" + v1.lastElement()); //100
        System.out.println("v1的第二个元素:" + v1.get(1)); //World
        System.out.println("v1中第一个匹配'Hello'的元素的索引:" + v1.indexOf("Hello")); //0
    }

测试用例执行截图如下:

8.5 删除Vector中的元素

测试代码如下:

java 复制代码
    //删除Vector中的元素
    @Test
    public void testRemoveVector() {
        Vector<Object> v1 = new Vector<Object>();
        v1.add("Hello");
        v1.add("World");
        v1.addElement(new Integer(100));
        System.out.println("v1的元素:" + v1);

        
        v1.remove("World");
        System.out.println("删除'World'后v1的元素:" + v1); //[Hello, 100]
    }

测试用例执行截图如下:

在上述测试用例中,创建了三个不同容量的Vector对象,向v1中添加了三个元素后,使用Vector的常用方法获取了元素、查找元素、删除元素等操作。

9. 全文小结

Vector是Java集合框架中的一种动态数组,可以根据需要进行扩容或减少容量。Vector类实现了List接口,能够存储任意类型的对象。本文介绍了Vector的概念、创建Vector对象、向Vector中添加元素、从Vector中获取元素、Vector的常用方法、Vector的优缺点、测试用例等内容。在开发中需要注意Vector的缺点和多线程并发操作时的同步问题。

最后

大家如果觉得看了本文有帮助的话,麻烦给个三连(点赞、分享、转发)支持一下哈。

相关推荐
工业甲酰苯胺11 分钟前
Spring Boot 整合 MyBatis 的详细步骤(两种方式)
spring boot·后端·mybatis
严文文-Chris24 分钟前
【设计模式-享元】
android·java·设计模式
Flying_Fish_roe40 分钟前
浏览器的内存回收机制&监控内存泄漏
java·前端·ecmascript·es6
新知图书43 分钟前
Rust编程的作用域与所有权
开发语言·后端·rust
c#上位机1 小时前
C#事件的用法
java·javascript·c#
【D'accumulation】1 小时前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
wn5312 小时前
【Go - 类型断言】
服务器·开发语言·后端·golang
试行2 小时前
Android实现自定义下拉列表绑定数据
android·java
茜茜西西CeCe2 小时前
移动技术开发:简单计算器界面
java·gitee·安卓·android-studio·移动技术开发·原生安卓开发