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. LOVE POWER html与javaScript

    1.纯HTML与javaScript编写的表白动态图 1.对于世界而言,你是一个人:但是对于某个人,你是他的整个世界. 2.不要为那些不愿在你身上花费时间的人而浪费你的时间. 3.我爱你,不是因为你是 ...

  2. 【面试】足够“忽悠”面试官的『Spring事务管理器』源码阅读梳理(建议珍藏)

    PS:文章内容涉及源码,请耐心阅读. 理论实践,相辅相成 伟大领袖毛主席告诉我们实践出真知.这是无比正确的.但是也会很辛苦. 就像淘金一样,从大量沙子中淘出金子一定是一个无比艰辛的过程.但如果真能淘出 ...

  3. Linux之VMWare下Centos7的三种网络配置过程

    Linux之VMWare下Centos7的三种网络配置过程 环境: 虚拟软件:VMWare 14.0 客户机:windows 10 虚拟机:centos 7 VMware三种网络连接方式 Bridge ...

  4. Java程序语言的后门-反射机制

    在文章JAVA设计模式-动态代理(Proxy)示例及说明和JAVA设计模式-动态代理(Proxy)源码分析都提到了反射这个概念. // 通过反射机制,通知力宏做事情 method.invoke(obj ...

  5. 第八届蓝桥杯java b组第十题

    标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...

  6. Xshell无法连接Linux虚拟机问题

    遇到的情况是,在虚拟机下安装了Linux后,xshell无法连接远程的虚拟机. 我遇到的情况是虚拟机可以ping 主机,主机确ping不了虚拟机. 使用的VM设置了两个网卡,一个nat  一个host ...

  7. 由"跨域"引出的一个终极思想(jsonp)

    1.什么是跨域? 当协议.子域名.主域名.端口号中任意一个不相同时,都算作不同域. 跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,但是因为浏览器存在一个"同源策略&q ...

  8. Python学习笔记整理总结【Django】:中间件、CSRF、缓存

     一.中间件  中间件是一类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法:在django项目的settings模块中,有一个 MIDDLEWARE 变量,其中每 ...

  9. 浏览器端获取短信验证码java实现——阿里云短信服务

    需求:浏览器端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短 ...

  10. springboot 2.1.3 + mybatis + druid配置多数据源

    在一些大型的项目中,通常会选择多数据库来满足一些业务需求,此处讲解使用springboot.mybatis和druid来配置多数据源 1.依赖配置 pom文件引入相关依赖 <dependency ...