C++程序员学Java系列之三十:数据结构之向量Vector

2024-05-25 09:08

本文主要是介绍C++程序员学Java系列之三十:数据结构之向量Vector,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java Vector 类

Vector类是动态数组。和ArrayList和相似,但是两者是不同的:

  • Vector是同步访问的。
  • Vector包含了许多传统的方法,这些方法不属于集合框架。

Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

Vector类支持4种构造方法。

第一种构造方法创建一个默认的向量,默认大小为10:

Vector()

第二种构造方法创建指定大小的向量。

Vector(int size)

第三种构造方法创建指定大小的向量,并且增量用incr指定. 增量表示向量每次增加的元素数目。

Vector(int size,int incr)

第四中构造方法创建一个包含集合c元素的向量:

Vector(Collection c)

除了从父类继承的方法外Vector还定义了以下方法:

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


样例:

import java.util.Vector;public class JavaTest {public static void main(String[] args) {// TODO Auto-generated method stub// 3表示Vector初始化时容量为3,2表示每次扩容+2个容量Vector<Integer> v = new Vector<Integer>(3, 2);System.out.println("大小:" + v.size() + ",容量:" + v.capacity());v.add(1);v.add(2);v.add(3);System.out.println("大小:" + v.size() + ",容量:" + v.capacity());v.add(4);System.out.println("大小:" + v.size() + ",容量:" + v.capacity());v.addElement(new Integer(5));System.out.println(v.firstElement());System.out.println(v.lastElement());System.out.println("------------------");for (Integer integer : v) {System.out.println(integer);};System.out.println("大小:" + v.size() + ",容量:" + v.capacity());System.out.println("------------------");System.out.println("索引为2的数据:"+v.get(2));v.remove(2);//索引下标System.out.println("索引为2的数据:"+v.get(2));for (Integer integer : v) {System.out.println(integer);};System.out.println("大小:" + v.size() + ",容量:" + v.capacity());System.out.println("after call clear()...");v.clear();for (Integer integer : v) {System.out.println(integer);};System.out.println("大小:" + v.size() + ",容量:" + v.capacity());}
}





这篇关于C++程序员学Java系列之三十:数据结构之向量Vector的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001075

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

C++的模板(八):子系统

平常所见的大部分模板代码,模板所传的参数类型,到了模板里面,或实例化为对象,或嵌入模板内部结构中,或在模板内又派生了子类。不管怎样,最终他们在模板内,直接或间接,都实例化成对象了。 但这不是唯一的用法。试想一下。如果在模板内限制调用参数类型的构造函数会发生什么?参数类的对象在模板内无法构造。他们只能从模板的成员函数传入。模板不保存这些对象或者只保存他们的指针。因为构造函数被分离,这些指针在模板外

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型