Vector向量

vector类似动态数组,向量和数组类似,但是数组容量一旦确定不可更改,而向量的容量可变。向量只可以保存任何类型对象且容量不限制,数组对元素类型无限制但是容量有限。

适用场合:向量适用频繁增删元素且元素数组不确定情况、元素都是对象、

数组适合对象数目确定、基础数据类型的元素。

构造方法:

public Vector();

public Vector(int initialCapacity);指定初始容量,超过容量系统自动增加一倍

public Vector(int initialCapacity,int CapacityIncrement);指定初始容量和增长增量,CapacityIncrement为0是默认自动增加一倍(向量的自动增长多于所需内存空间的)

public Vector(Collection<? extends E> c);指定集合构造vector

属性:

protected int capacityIncrement 向量的增量

protected int elementCount 向量的元素个数

protected Object elementData[]  向量成员的缓冲区

常用方法:

void addElement(Object obj);添加到尾部,容量增1

int capacity()返回向量容量

boolean contains(Object obj)判断向量是否包含指定元素

void copyInfo(Object Array[])将向量复制到数组

synchronized Object elementAt(int index)返回指定位置元素,下标非法时抛出ArrayIndexOutOfBoundsException异常

void ensureCapacity(int size)设置向量最小容量为size

synchronized Object firstElement()返回第一个元素,向量为空时抛出NoSuchElementException异常

int indexOf(Object element)返回元素下标,不存在时返回-1

int indexOf(Object element,int start)指定位置开始搜索元素,返回下标值,不存在时返回-1

void insertElementAt(Object obj,int index)指定位置插入,此位置后的内容往后移动1

boolean isEmpty()判断向量是否为空

synchronized Object lastElement()返回向量的最后一个元素,向量为空时抛出NoSuchElementException

int lastIndexOf(Object element)从向量尾开始搜索,返回元素下标

int lastIndexOf(Object element,int start)从指定位置开始向前搜索,返回元素下标

boolean removeElement(Object obj)删除指定元素,若有多个只删除第一个

void removeAllElements()删除所有,容量变为0

void removeElementAt(int index)删除指定位置元素

void setElementAt(Object obj,int index)替换指定位置内容

void setSize(int size)将向量长度设置为size,新长度小于原长度则元素丢失,大于原长度,则自动置为null

int size()返回向量中元素个数

String toString()向量转换为字符串

示例:

package test;

import java.util.Arrays;

import java.util.*;

public class VectorTest {

public static void main(String[] args) {

Vector<String> vector = new Vector<String>();

vector.add("vector1");

vector.addElement("vector2");

vector.add("向量3");

vector.addElement("向量4");

vector.insertElementAt("向量5插入", 2);

System.out.println("1-向量:"+vector);

vector.setElementAt("向量替换1", 1);

System.out.println("2-向量:"+vector+vector.size());

System.out.println("3-向量:"+vector.lastElement());

System.out.println("4-向量:"+vector.lastIndexOf("vector1"));

//不存在元素vector2

if(vector.indexOf("vector2")==-1){

System.out.println("5-向量:"+vector.indexOf("vector2"));

}

System.out.println("6-向量:"+vector.contains("向量4"));

String[] arr= new String[5];

//向量复制到数组

vector.copyInto(arr);

System.out.println("7-数组打印:"+Arrays.toString(arr));

vector.removeAllElements();

System.out.println("8-向量:"+vector.isEmpty());

vector = new Vector<String>(Arrays.asList(arr));

System.out.println("9-向量:"+vector);

System.out.println("10-向量toString打印:"+vector.toString());

for(String vec : vector){

System.out.println(vec);

}

}

}

java集合之Vector向量基础的更多相关文章

  1. Java基础系列 - JAVA集合ArrayList,Vector,HashMap,HashTable等使用

    package com.test4; import java.util.*; /** * JAVA集合ArrayList,Vector,HashMap,HashTable等使用 */ public c ...

  2. java集合之vector容器

    学完ArrayList和LinkedList之后,我们接着学习Vector.第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 ...

  3. Java集合之Vector

    Vector是矢量队列,它继承了AbstractList,实现了List. RandomAccess, Cloneable, java.io.Serializable接口. Vector接口依赖图: ...

  4. java集合之ArrayList链表基础

    ArrayList可变数组 : arrayList继承AbstractList抽象类,实现list接口,底层基于数组实现.可存放null,除了非同步的之外,大致等同Vector.适用快速访问,复制.序 ...

  5. Java集合之Vector源码分析

    概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面 ...

  6. java集合之Stack栈基础

    Stack堆栈: 是后进先出(LIFO)的对象堆栈,继承Vector—AbstractList--AbstractCollection类,底层是通过数组实现, boolean empty() 判断堆栈 ...

  7. java 集合(Vector)不做重点

    Vector: 底层也是维护了一个Object数组,实现与ArrayList是一样的, 但其线程是安全的,效率低.除了比较老的系统,是不会用到的. 笔试题:ArrayList 和 Vector 的区别 ...

  8. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  9. Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理

    本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...

随机推荐

  1. 一文读懂NodeJS全栈开发利器:CabloyJS(万字长文)

    目录 0 修订 0.1 修订说明 0.2 修订历史 1 基本概念 1.1 CabloyJS是什么 1.2 CabloyJS核心解决什么问题 1.3 CabloyJS的开发历程 2 数据版本与开发流程 ...

  2. NPOI导出2007格式报错:文件损坏

    这个问题,归根结底还是代码问题,如下修改了代码就可以了.左侧是会出现问题的代码,右侧是正确的代码,自己感受,我也是一口老血:

  3. Java I/O系统学习四:标准IO

    几乎所有学习Java的同学写的第一个程序都是hello world,使用的也都是System.out.println()这条语句来输出"hello world",我也不例外,当初学 ...

  4. CDH集群安装

    1 软硬件准备 1.1 准备三个节点 序号 主机名 内存 CPU IP地址 角色 1 cdh1 8G 8核心 192.168.5.78 cloudera-scm-server,mysql 2 cdh2 ...

  5. Java连载34-对象的内存分析、对象之间建立关系

    一.内存分析 代码:引用可以是局部变量也可以是成员变量 public class Test1{ public static void main(String[] args){ User u = new ...

  6. Python语法基础之对象(字符串、列表、字典、元组)

    转载自https://blog.csdn.net/lijinlon/article/details/81630154 字符串 String 定义:S = 'spam' 索引:S[0] = 's';S[ ...

  7. Mybatis逆向工程过程中出现targetRuntime in context mybatisGenerator is invalid

    最开始设置的Mybatis,但是逆向工程准备就绪后出现问题 报错为targetRuntime in context mybatisGenerator is invalid 后来修改为Mybatis3能 ...

  8. 手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细,非常实用)

    简介 前边一篇文章是分享如何搭建pytest+Allure的环境,从而生成一份精美的.让人耳目一新的测试报告,但是有的小伙伴或者童鞋们可能会问,我能不能按照自己的想法为我的项目测试结果量身打造一份属于 ...

  9. ZooKeeper单机服务端的启动源码阅读

    程序的入口QuorumPeerMain public static void main(String[] args) { // QuorumPeerMain main = new QuorumPeer ...

  10. 基 B/S 平台的机房监控云平台-U位篇

    前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...