Java——数组向量(Vector)详解
Posted 指尖飞码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java——数组向量(Vector)详解相关的知识,希望对你有一定的参考价值。
数组
一维数组初始化方式:
1. int []arr=new int[5]; 和int arr[] = new int[5];效果是一样的,不过开发中推荐前者。
2. int[]arr = new int[]3,5,1,7;或者简化为int []arr = 3,5,1,7;
二维数组定义方式
//直接为每一维分配空间
int a[][] = new int[2][3];
//依次为每一维分配空间
int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[3];
这一点在c和c++中是不同的。在c和c++中必须一次指明每一维的长度。
二维数组初始化方式
: (1)直接对每个元素进行赋值; (2)在定义数组的同时进行初始化。如:int a[][]=2,3,1,5,3,4;
//a数组的行和列的个数可以通过length求得
a.length = 3;
a[i].length = 2;
向量(Vector)
Vector和数组非常类似,但是它可以存储多个对象,并且可以根据索引值来检索这些对象。数组和Vector的最大区别就是当空间用完以后,Vector会自动增长。同时Vector还提供了额外的方法来增加或者删除元素,而在数组中,必须手工完成。
Vector的三种构造方法
(1)public Vector();创建一个空的Vector;
(2)public Vector(int initialcapacity);创建一个Vector,其初始化大小为initial capacity.
(3)public Vector(int initialcapacity,int capacityIncrement);
创建一个Vector,其初始化大小为initial capacity,当Vector需要增长时,其增长速度由capacityIncrement决定。
注意:如果增长的速度不指定,那么Vector会将其空间增加一倍。当Vector很大的时候,这可能导致系统性能下降以及其他问题,建议设置具体的增长速度。
Vector中的几种查找函数
(1)public final int indexOf(Object obj)
从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1.
(2)public final synchronized int indexOf(Object obj,int startindex) throws ArrayIndexOutOfBoundsException;
从startindex所表示的下标处开始搜索obj在Vector中第一次出现的位置,没有找到就返回-1.
(3)public final int lastindexOf(Object obj)
返回Vector中对象obj最后一次出现的位置,否则返回-1
(4)public final synchornized int lastIndexOf(Object obj,int index)throws ArrayIndexOutOfBoundsException;
从index所表示的下标处由尾至头逆向搜索obj.
(5)public final synchornized firstElement()
获取向量对象中的首个obj
(6)public final synchornized Object lastElement()
获取向量对象的最后一个obj
(7)public final boolean contains(Object ob);
查找一个对象是否在一个Vector中,只要出现一次ob指定的对象就返回true,否则返回false。
Vector中的增加和移除和改变大小操作
插入
(1)public final synchronized void adddElement(Object obj)
将obj插入向量的尾部。obj可以是任何类型的对象。对同一个向量对象,亦可以在其中插入不同类的对象。但插入的应是对象而不是数值,所以插入数值时要注意将数组转换成相应的对象。
例如:要插入整数1时,不要直接调用v1.addElement(1),正确的方法为:
Vector v1 = new Vector();
Integer integer1 = new Integer(1);
v1.addElement(integer1);
(2)public final synchronized void setElementAt(Object obj,int index)throws ArrayIndexOutOfBoundsException;
将index处的对象设置成obj,原来的对象将被覆盖。
(3)public final synchronized void insertElementAt(Object obj,int index)throws ArrayIndexOutOfBoundsException;
在index指定的位置插入obj,原来对象以及此后的对象依次往后顺延.如果该位置不存在则抛出一个ArrayIndexOutOfBoundsException异常。
移除
(1)public final synchronized boolean removeElement(Object obj)
移走一个特定的对象obj,如果对象在Vector中出现多次,只移走第一次出现的对象。成功返回true,否则返回false。
(2)public final synchronized void removeAllElement();
删除向量所有的对象
(3)public fianl synchronized void removeElementAt(int index) throws ArrayIndexOutOfBoundsException;
删除index所指的地方的对象 ,并移动其他对象来填充移走对象的空隙。如果试图从一个不存在的位置移走对象,则会抛出ArrayIndexOutOfBoundsException异常。
改变大小的操作
Vector有两种大小的概念,当前存储的元素的个数(size)和Vector的最大容量(capacity);
//capacity方法告诉用户Vector能容纳多少个对象。
public final int capacity();
//ensureCapacity方法可以增加Vector的大小
public final synchronized void ensureCapacity(int minimumCapacity);
/*告诉Vector至少能存储minimumCapacity个元素,如果Vector的当前容量比minumunCapacity的 小,将分配给Vector更多的空间;如果Vector的当前空间比minimumCapacity大,Vector也不会减少当前空间。*/
如果要减少Vector的容量,可以使用trimToSize方法:
public final synchronized void trimTosize();
//该方法将Vector的容量减少至当前存储的元素的个数。
public final int size();
//该方法告诉Vector中当前含有多少个对象:
public synchronized final void setSize(int newSize);
//该方法用于改变当前元素的个数,如果新尺寸小于原尺寸,则新尺寸以后的Vector中原有的元素将丢失;如果新尺寸大于原来的尺寸,,则新增加的元素的值会被置为null。
以上是关于Java——数组向量(Vector)详解的主要内容,如果未能解决你的问题,请参考以下文章