likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 13

《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类的构造函数:

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类的构造函数即可。

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()等方法。

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()等方法获取第一个、最后一个或指定位置的元素。

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。

排序方法:

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

7. Vector的优缺点

Vector的优点:

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

Vector的缺点:

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

8. 测试用例

8.1 创建一个空的Vector对象

测试代码如下:

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());
    }
}

测试用例执行截图如下:

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

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

测试代码如下:

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

测试用例执行截图如下:

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

8.3 向Vector中添加元素

测试代码如下:

    //向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);
    }

测试用例执行截图如下:

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

8.4 从Vector中获取元素

测试代码如下:

    //从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
    }

测试用例执行截图如下:

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

8.5 删除Vector中的元素

测试代码如下:

    //删除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]
    }

测试用例执行截图如下:

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

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

9. 全文小结

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

最后

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