Java中Vector类

Java中Vector类的用法

一、本文是对三篇文章的总结与排版,链接如下

链接1: [https://www.cnblogs.com/zhaoyan001/p/6077492.html]
链接2:[https://blog.csdn.net/lskyne/article/details/8769147]
链接3:[http://www.cnblogs.com/xiaostudy/p/9526270.html]

二、有关Vector

Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。

Java语言中没有指针的概念,为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。

创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。 对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。

ArrayList会比Vector快,但它是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 鸭~

另外,Vector 在参数传递中发挥着举足轻重的作用。
在Applet 中有一块画布(Canvas) 和一个(Panel),
Panel 中放着用户要输入的信息,根据这些信息把参数传递到canvas 中,这时在Java 中用一个接口(Interface), 而在接口中需用一个Vector 去传递这些参数。
如下:  
import java.util.Vector
interface codeselect{ Vector codeselect=new Vector(); } 显示数学信息
Vector(0)存入学生编号
Vector(1)存入学科     
在Panel 中当用户在TextField 和Choice 中选择自己所要求的内容,程序中通过事件响应把值传到向量Vector 中。

1、向量类提供的三种构造方法

(1)public vector()
(2)public vector(int initialcapacity)
(3)public vector(int initialcapacity,int capacityIncrement)
initialcapacity 初始容量;capacityIncrement 容量增量(有没有超级贴心!~ 快叫我小仙女!~

使用第一种方法系统会自动对向量进行管理,若使用后两种方法。则系统将根据参数,initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真正存放的数据个数超过容量时。系统会扩充向量对象存储容量。

参数capacityincrement给定了每次扩充的扩充值。当capacityincrement为0的时候,则每次扩充一倍,利用这个功能可以优化存储。

2、有关Vector< E >

Vector< E > v=new Vector< E >();
E可以是泛型类,如Stirng,可以自定义,感觉E很像但链表中的节点定义,Vector则是数组

3、Vector类中的各种方法

(1)插入功能:

①public final synchronized void addElement(Object obj)
将obj插入向量的尾部。obj可以是任何类型的对象。对同一个向量对象,亦可以在其中插入不同类的对象。 但插入的应是对象而不是数值,所以插入数值时要注意将数组转换成相应的对象。

例如:要插入整数1时,不要直接调用v1.addElement(1),正确的方法为:

Vector v1 = new Vector(); 
Integer integer1 = new Integer(1); 
v1.addElement(integer1); 

②public final synchronized void setElementAt(Object obj,int index)
将index处的对象设置成obj,原来的对象将被覆盖。

③public final synchronized void insertElementAt(Object obj,int index)
在index指定的位置插入obj,原来对象以及此后的对象依次往后顺延。

④void add(int index, E element)
在此向量的指定位置插入指定的元素。

⑤boolean addAll(Collection<? extends E> c)
将指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。

⑥ boolean addAll(int index, Collection<? extends E> c)
在指定位置将指定 Collection 中的所有元素插入到此向量中。

(2)删除功能:

①public final synchronized void removeElement(Object obj)
从向量中删除obj,若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员。

②public final synchronized void removeAllElement();
删除向量所有的对象

③public fianl synchronized void removeElementAt(int index)
删除index所指的地方的对象

④void clear()
从此向量中移除所有元素。

⑤boolean removeAll(Collection<?> c)
从此向量中移除包含在指定 Collection 中的所有元素。

⑥protected void removeRange(int fromIndex, int toIndex)
从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。

⑦boolean retainAll(Collection<?> c)
在此向量中仅保留包含在指定 Collection 中的元素。

(3)查询搜索功能:

①public final int indexOf(Object obj)
从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1.

②public final synchronized int indexOf(Object obj,int index)
从index所表示的下标处开始搜索obj.

③public final int lastindexOf(Object obj)
从向量尾部开始逆向搜索obj.

④public final synchornized int lastIndexOf(Object obj,int index)
从index所表示的下标处由尾至头逆向搜索obj.

⑤public final synchornized firstElement()
获取向量对象中的首个obj

⑥public final synchornized Object lastElement()
获取向量对象的最后一个obj

⑦boolean contains(Object elem)
测试指定的对象是否为此向量中的组件。

boolean containsAll(Collection<?> c)
如果此向量包含指定 Collection 中的所有元素,则返回 true。

⑧E elementAt(int index)
返回指定索引处的组件

⑨E get(int index)
返回向量中指定位置的元素。

(4)获取向量元素的个数、容量值:

public final int size();
它们返回值是向量中实际存在的元素个数,而非向量容量。可以调用方法capacity()来获取容量值。

(5)定义向量的大小:

public final synchronized void setsize(int newsize);
此方法用来定义向量的大小,若向量对象现有成员个数已经超过了newsize的值,则超过部分的多余元素会丢失。

(6)Enumeration接口类:

在Enumeration中封装了有关枚举数据集合的方法。

在Enumeration提供了方法hasMoreElement()来判断集合中是否还有其他元素和方法nextElement()来判断集合中是否还有其他元素和方法nextElement()来获取下一个元素。利用这两个方法,可以依次获得集合中的元素。

Vector中提供方法:
public final synchronized Enumeration elements();
此方法将向量对象对应到一个枚举类型。java.util包中的其他类中也都有这类方法,以便于用户获取对应的枚举类型

例子:VectorApp.Java

import java.util.Vector;   
import java.lang.*;   
import java.util.Enumeration;  
public class VectorApp   
{   
     public static void main(String args[])   
     {   
          Vector v1 = new Vector();   
          Integer integer1= new Integer(1);   
          //加入为字符串对象   
          v1.addElement("one");   
          //加入的为integer的对象   
          v1.addElement(integer1);  
          v1.addElement(new Integer(2));   
          //转为字符串并打印   
            System.out.println("The Vector v1 is:\n\t"+v1);   
             //向指定位置插入新对象   
          v1.insertElementAt("three",2);   
          v1.insertElementAt(new Float(3.9),3);   
          System.out.println("The Vector v1(used method   
          insertElementAt()is:\n\t)"+v1);   
          //将指定位置的对象设置为新的对象   
            //指定位置后的对象依次往后顺延   
            v1.setElementAt("four",2);   
           System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);   
           //从向量对象v1中删除对象integer1   
           //由于存在多个integer1,所以从头开始。   
             //找删除找到的第一个integer1.   
           v1.removeElement(integer1); 
          //使用枚举类(Enumeration)的方法取得向量对象的每个元素。
          Enumeration enum = v1.elements();   
           System.out.println("The vector v1 (used method removeElememt()is");   
            while(enum.hasMoreElements())   
            System.out.println(enum.nextElement()+"");   
            System.out.println();   
          //按不同的方向查找对象integer1所处的位置 
           System.out.println("The position of Object1(top-to-botton):"+v1.indexOf(integer1));   
           System.out.println("The position of Object1(tottom-to-top):"+v1.lastIndexOf(integer1));
            //重新设置v1的大小,多余的元素被抛弃  
                        v1.setSize(4);   
            System.out.println("The new Vector(resized the vector)is:"+v1);   
                 
     }   
}  
(7)返回向量的副本

Object clone()

(8)将此向量的组件复制到指定的数组中

void copyInto(Object[] anArray)

(9)比较指定对象与此向量的相等性

boolean equals(Object o)

(10)把集合中的元素复制到anArray数组中去

public void copyInto(Object[] anArray)

(11)调整容量

①public void setSize(int newSize)
设置集合的容量大小为newSize,如果newSize大于集合元素个数,那么会在后面添加null,如果newSize小于集合元素个数,那么直保留newSize个元素

②public void trimToSize()
整理集合的容量大小,如果集合元素个数等于容量大小,那么没有变化,如果集合个数小于容量大小,那么容量会设置为元素个数大小

小小编的小小吐槽和balabala
第一次整理材料哇…必须要吐槽一下CSDN了,好几次剪切粘贴后直接给我灰掉,显示文本字数为0.气得我写一点保存一次…
有错误的话欢迎大家在评论区指出哦~~ 一起进步!~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值