java vector 类

news2024/11/16 19:51:34

目录

一.前言

1.1vector简介

1.1.1java Collection下的子类图

1.1..2 介绍

1.1.3Vector类详细规则

1.2Vector与ArrayList的区别

二.Vector的方法

 三.代码示例(demo)


一.前言

1.1vector简介

1.1.1java Collection下的子类图

1.1..2 介绍

  Vector类 是在 java 中可以实现自动增长的对象数组

  Java中Vector类是允许不同类型元素共存的变长数组,Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。在Java中是没有zhizheng 概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量,比如在C、C++中所谓“动态数组”一般都由指针来实现。为了弥补这点缺陷,Java提供了丰富的类库来方便编程者使用,Vector类便是其中之一。事实上,灵活使用数组也可完成向量类的功能,向量类中提供的大量方法也大大方便了用户的使用。

1.1.3Vector类详细规则

  在相对于ArrayList来说,Vector线程是安全的,也就是说是同步的。创建了一个向量类的对象后,可以往其中随意地插入不同的类的对象,既不需顾及类型也不需预先选定向量的容量,并可方便地进行查找。对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类。向量类提供了种构造方法:

//第一种构造方法创建一个默认的向量,默认大小为 10:
Vector()
//第二种构造方法创建指定大小的向量。
Vector(int size)
//第三种构造方法创建指定大小的向量,并且增量用 incr 指定。增量表示向量每次增加的元素数目。
Vector(int size,int incr)
//第四种构造方法创建一个包含集合 c 元素的向量:
Vector(Collection c)

参数capacityIncrement给定了每次扩充的扩充值。当capacityIncrement为0时,则每次扩充一倍。利用这个功能可以优化存储。在Vector类中提供了各种方法方便用户使用:

1.2Vector与ArrayList的区别

1. 线程安全: Vector 使⽤了 Synchronized 来实现线程同步,是线程安全的,⽽ ArrayList 是⾮线程安全的。
2.性能: ArrayList 在性能⽅⾯要优于 Vector
3.扩容: ArrayList Vector 都会根据实际的需要动态的调整容量,只不过在 Vector 扩容每次会增
1 倍,⽽ ArrayList 只会增加 50%

二.Vector的方法

序号方法描述
1void add(int index, Object element) 
 在此向量的指定位置插入指定的元素。
2boolean add(Object o) 
 将指定元素添加到此向量的末尾。
3boolean addAll(Collection c) 
将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。
4boolean addAll(int index, Collection c) 
在指定位置将指定 Collection 中的所有元素插入到此向量中。
5void addElement(Object obj) 
 将指定的组件添加到此向量的末尾,将其大小增加 1。
6int capacity() 
返回此向量的当前容量。
7void clear() 
从此向量中移除所有元素。
8Object clone() 
返回向量的一个副本。
9boolean contains(Object elem) 
如果此向量包含指定的元素,则返回 true。
10boolean containsAll(Collection c) 
如果此向量包含指定 Collection 中的所有元素,则返回 true。
11void copyInto(Object[] anArray) 
 将此向量的组件复制到指定的数组中。
12Object elementAt(int index) 
返回指定索引处的组件。
13Enumeration elements() 
返回此向量的组件的枚举。
14void ensureCapacity(int minCapacity) 
增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。
15boolean equals(Object o) 
比较指定对象与此向量的相等性。
16Object firstElement() 
返回此向量的第一个组件(位于索引 0) 处的项)。
17Object get(int index) 
返回向量中指定位置的元素。
18int hashCode() 
返回此向量的哈希码值。
19int indexOf(Object elem) 
 返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回 -1。
20int indexOf(Object elem, int index) 
 返回此向量中第一次出现的指定元素的索引,从 index 处正向搜索,如果未找到该元素,则返回 -1。
21void insertElementAt(Object obj, int index) 
将指定对象作为此向量中的组件插入到指定的 index 处。
22boolean isEmpty() 
测试此向量是否不包含组件。
23Object lastElement() 
返回此向量的最后一个组件。
24int lastIndexOf(Object elem) 
 返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1。
25int lastIndexOf(Object elem, int index) 
返回此向量中最后一次出现的指定元素的索引,从 index 处逆向搜索,如果未找到该元素,则返回 -1。
26Object remove(int index) 
 移除此向量中指定位置的元素。
27boolean remove(Object o) 
移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。
28boolean removeAll(Collection c) 
从此向量中移除包含在指定 Collection 中的所有元素。
29void removeAllElements() 
从此向量中移除全部组件,并将其大小设置为零。
30boolean removeElement(Object obj) 
从此向量中移除变量的第一个(索引最小的)匹配项。
31void removeElementAt(int index) 
删除指定索引处的组件。
32protected void removeRange(int fromIndex, int toIndex)
从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。
33boolean retainAll(Collection c) 
在此向量中仅保留包含在指定 Collection 中的元素。
34Object set(int index, Object element)
 用指定的元素替换此向量中指定位置处的元素。
35void setElementAt(Object obj, int index) 
将此向量指定 index 处的组件设置为指定的对象。
36void setSize(int newSize) 
 设置此向量的大小。
37int size() 
 返回此向量中的组件数。
38List subList(int fromIndex, int toIndex) 
返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。
39Object[] toArray()
 返回一个数组,包含此向量中以恰当顺序存放的所有元素。
40Object[] toArray(Object[] a) 
返回一个数组,包含此向量中以恰当顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。
41String toString() 
返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。
42void trimToSize() 
  对此向量的容量进行微调,使其等于向量的当前大小。

 三.代码示例(demo)

demo

import java.util.Enumeration;
import java.util.Vector;

/**
 * <pre>
 *     Vector 小demo
 * </pre>
 */
public class Demo2 {
    public static void main(String[] args) {
        // 初始大小为3,增量为2
        Vector v = new Vector(3, 2);
        //初始大小
        System.out.println("初始化大小: " + v.size());
        //初始容量
        System.out.println("初始容量 : " + v.capacity());
        //扩容
        v.addElement(new Integer(1));
        v.addElement(new Integer(2));
        v.addElement(new Integer(3));
        v.addElement(new Integer(4));
        v.addElement(new Integer(5));
        System.out.println("五次增加后的容量: " + v.capacity());


        //当前容量
        v.addElement(new Double(5.45));
        System.out.println("当前容量: " + v.capacity());
        v.addElement(new Double(6.08));
        v.addElement(new Integer(7));
        System.out.println("当前容量:: " + v.capacity());
        v.addElement(new Float(9.4));
        v.addElement(new Integer(10));
        System.out.println("当前容量:: " + v.capacity());


        v.addElement(new Integer(11));
        v.addElement(new Integer(12));
        //首元素
        System.out.println("首元素: " + (Integer) v.firstElement());
        //尾元素
        System.out.println("尾元素: " + (Integer) v.lastElement());

        if (v.contains(new Integer(3)))
            System.out.println("Vector 包含 3.");
        // vector中的元素
        Enumeration vEnum = v.elements();
        System.out.println("Vector中的元素:");
        while (vEnum.hasMoreElements())
            System.out.print(vEnum.nextElement() + " ");
        System.out.println();
    }
}

代码输出

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0到1一步一步玩转openEuler--02 openEuler操作系统的安装

2 openEuler操作系统的安装 2.1 openEuler操作系统的安装流程 2.2 openEuler操作系统的安装详细步骤 本次介绍 openEuler 22.03-LTS 基于 X86 架构的安装。 2.2.1 下载地址 官网下载地址&#xff1a;https://www.openeuler.org/zh/download/ 根据你的实际需求选择适合架构…

提取游戏《碧蓝档案》(Blue Archive)内的素材

实际上你游素材直接去根目录下找就行&#xff0c;唯一需要处理的可能就是bgm&#xff08;格式均为ogg&#xff09;&#xff0c;用格式工厂或者你下个VLC都行。 使用方法&#xff1a;一根usb数据线&#xff0c;一台电脑&#xff0c;一部手机 目录 游戏目录位置 附录 更新&a…

SpringBean生命周期

IOC 控制反转 既然叫反转&#xff0c;肯定就有正转&#xff0c;正转其实就是对象去找实例&#xff0c;而反转就反过来了嘛&#xff0c;让实例来找对象通过容器&#xff1b; DI 依赖注入 通过容器注入了bean对象&#xff0c;而且这个过程是自动化的&#xff0c;也就是说容器…

计算机视觉

什么是计算机视觉&#xff1f; 计算机视觉是人工智能&#xff08;AI&#xff09;的一个领域&#xff0c;它使计算机和系统能够从数字图像、视频和其他视觉输入中提取有意义的信息&#xff0c;并根据该信息采取行动或提出建议。如果AI使计算机能够思考&#xff0c;那么计算机视…

webservice接口与HTTP接口学习笔记一、webservice 的概念

webservice接口与HTTP接口学习笔记一、webservice 的概念 目录&#xff1a;导读 一、webservice 的概念 二、webservice接口测试 三、HTTP接口 四、HTTP协议结构 一、webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术。Web 服务…

关于获取两数相除求百分比,浮点数或整数-相乘,相除-但余数需保留小数点不能有doble继承,应该使用BigDecimal进行四舍五入

int total 3; int finished 2; 类似于这种两数向除---需要将其转化为BigDecimal&#xff0c;利用其函数的方法相除&#xff0c;并用 BigDecimal类型接收结果。 int total 3 int finished 2; BigDecimal result BigDecimal.valueOf(finished).divide(BigDecimal.valueO…

function_url构造函数

目录URL构造函数作用语法返回值构造函数的特定方法URL.createObjectURLURL.revokeObjectURL应用[1]获取url携带参数[2]创建本地url[3]为每个文件生成一个uuidURL构造函数 作用 创建并返回指定url对象 语法 new URL(url,[base])url(必填): 若是rl 是相对 URL&#xff0c;则会…

操作系统简介

坚持看完&#xff0c;结尾有思维导图总结 这里写目录标题概述冯诺依曼体系结构操作系统简介总结概述 本文先介绍冯诺依曼体系结构&#xff0c;并且举了几个例子进行理解&#xff0c;随后粗略介绍操作系统功能&#xff0c;并且为进程的理解打下基础 冯诺依曼体系结构 首先上一…

Python入门第一课——Python起步安装、Sublime Text安装教程,环境配置

Python入门第一课——Python起步安装、Sublime Text文本编辑器1 Python简介2 Python安装2.1 下载安装包2.2 开始安装Python3 Python起步——安装编辑器Sublime Text3.1 Sublime Text简介3.2 Sublime Text安装安装包打开文件创建快捷方式3.3 打开sublime text3.4 第一个程序&…

LeetCode 刷题系列 -- 110. 平衡二叉树

给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1&#xff1a;输入&#xff1a;root [3,9,20,null,null,15,7]输出&#xff1a;true示例…

Lombok

Lombok概述Lombok插件安装Lombok依赖注解SetterGetterToStringEqualsAndHashCodeNonNull构造方法相关注解NoArgsConstructorRequiredArgsConstructorAllArgsConstructorDataBuilderLogCleanupSneakyThrows概述 LomBok可以通过注解&#xff0c;帮助开发人员消除JAVA中尤其是POJ…

【目标检测论文解读复现NO.30】基于改进YOLO v5的宁夏草原蝗虫识别模型研究

前言此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0c;…

【FPGA】FPGA实现SPI协议读写FLASH(二)----- SPI接口驱动模块设计

SPI接口驱动模块设计一、功能分析二、状态机设计三、信号说明四、代码实现五、仿真测试写在前面&#xff1a;FPGA实现SPI协议读写FLASH系列相关文章&#xff1a;SPI通信协议【FPGA】FPGA实现SPI协议读写FLASH&#xff08;一&#xff09;----- M25P16操作概述在上篇文章中对FLAS…

【MyBatis】框架特点,ORM思想,事务管理机制

1. Mybatis概述:1.1 基础知识:SSM三大框架: Spring SpringMVC MyBatis框架其实就是对通用代码的封装, 提前写好一堆接口和类, 在做项目的时候直接引入这些常用的借口和类(引入框架), 基于这些现有的接口和类进行开发, 可以大大提高开发效率.框架一般是以jar包的形式存在的, j…

Qt UDP

UDP是一种是一种轻量级、不可靠、面向数据报的无连接协议。当可靠性不重要时&#xff0c;可以使用它。 QUdpSocket 是 QAbstractSocket 的一个子类&#xff0c;所以拥有QAbstractSocket的各种方法&#xff0c;允许您发送和接收 UDP 数据报。 QAbstractSocket的各种函数已经在上…

【数据结构基础】树 - 前缀树(Trie Tree)

Trie&#xff0c;又称字典树、单词查找树或键树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎系统用于文本词频统计。它的优点是…

Zabbix灾难备份多种方式分享(建议收藏)

感谢本文译者田川 ! 欢迎更多资深用户翻译原厂博文&#xff08;https://blog.zabbix.com/&#xff09;&#xff01; 田川 | 宏时数据技术工程师 Zabbix 5.0中文手册官方译者 2017-2018年Zabbix中国峰会演讲嘉宾 8年监控领域实施和管理工作经验 ►在这篇博文中&#xff…

mysql关系型数据库免安装包下载以及安装教程

对于大部分技算计技术相关的初学者而言&#xff0c;mysql关系型数据库无可厚非是最适合初学者学习使用的&#xff0c;但是对于安装mysql数据库来说可能就不是特别明确&#xff0c;到底如何安装。互联网上比较多都是官网的.msi安装包&#xff0c;自带mysql客户端和一些其他关联程…

2023年“华数杯”国际大学生数学建模A题赛题发布

MCM问题一&#xff1a;雅鲁藏布江综合发展规划背景雅鲁藏布江是中国最长的高原河流&#xff0c;也是世界上最高的高原河流之一。它起源 于喜马拉雅山脉的北部山麓&#xff0c;从西向东流&#xff0c;然后转向南部&#xff0c;流向印度。中国的雅鲁 藏布江全长2057公里&#xff…

诺依集成mybatis换成mybatis-plus(完美解决)

总结分析&#xff1a;问题1&#xff1a;mybatis与mybatis-plus能否共存&#xff1f;经过将近一天的搜索发现&#xff0c;mybatis与mybatis-plus的sql工厂不通&#xff0c;mybatis是SqlSessionFactoryBean&#xff0c;而mybatis-plus是MybatisSqlSessionFactoryBean&#xff0c;…