java.util.vector中的vector的详细用法
来源:互联网 发布:bat执行java main方法 编辑:程序博客网 时间:2024/05/16 14:53
java.util.vector中的vector的详细用法
array(数组)和Vector是十分相似的Java构件(constructs),两者全然不同,在选择使用时应根据各自的功能来确定。
1、数组:Java arrays的元素个数不能下标越界,从很大程度上保证了Java程序的安全性,而其他一些语言出现这一问题时常导致灾难性的后果。
Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再改变。值得注意的是:当Array中的某一元素存放的是Objrct reference 时,Java不会调用默认的构造函数,而是将其初值设为null,当然这跟Java对各类型数据赋默认值的规则是一样的,对基本数据类型同样适用。
2、Vector:对比于Array,当更多的元素被加入进来以至超出其容量时,Vector的size会动态增长,而Array容量是定死的。同时,Vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了)。注意:当调用Vector的size()方法时,返回Vector中实际元素的个数。
Vector内部实际是以Array实现的,也通过元素的整数索引来访问元素,但它只能存放java.lang.Object对象,不能用于存放基本类型数据,比如要存放一个整数10,得用new Integer(10)构造出一个Integer包装类对象再放进去。当Vector中的元素个数发生变化时, 其内部的Array必须重新分配并进行拷贝,因此这是一点值得考虑的效率问题。
Vetor同时也实现了List接口,所以也可以算作Colletion了,只是它还特殊在:Vector is synchronized。即Vetor对象自身实现了同步机制。
3、ArrayList:实现了List接口,功能与Vetor一样,只是没有同步机制,当然元素的访问方式为从List中继承而来,可存放任何类型的对象。
4、HashMap:继承了Map接口,实现用Keys来存储和访问Values,Keys和Values都可以为空,它与Hashtable类的区别在于Hashtable类的Keys不能为null,并Hashtable类有同步机制控制,而HashMap类没有。
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些
import java.util.*;
/**
* 演示Vector的使用。包括Vector的创建、向Vector中添加元素、从Vector中删除元素、
* 统计Vector中元素的个数和遍历Vector中的元素。
*/
public class VectorDemo{
public static void main(String[] args){
//Vector的创建
//使用Vector的构造方法进行创建
Vector v = new Vector(4);
//向Vector中添加元素
//使用add方法直接添加元素
v.add("Test0");
v.add("Test1");
v.add("Test0");
v.add("Test2");
v.add("Test2");
//从Vector中删除元素
v.remove("Test0"); //删除指定内容的元素
v.remove(0); //按照索引号删除元素
//获得Vector中已有元素的个数
int size = v.size();
System.out.println("size:" + size);
//遍历Vector中的元素
for(int i = 0;i < v.size();i++){
System.out.println(v.get(i));
}
}
}
-------------
Vector 类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大。在删除一些元素之后,数组变小。
Vector 有三个构造函数,
public Vector(int initialCapacity,int capacityIncrement) public Vector(int initialCapacity) public Vector() Vector运行时创建一个初始的存储容量initialCapacity,存储容量是以capacityIncrement变量定义的增量增长。初始的存储容量和capacityIncrement可以在Vector的构造函数中定义。第二个构造函数只创建初始存储容量。第三个构造函数既不指定初始的存储容量也不指定capacityIncrement。 Vector类提供的访问方法支持类似数组运算和与Vector大小相关的运算。类似数组的运算允许向量中增加,删除和插入元素。它们也允许测试矢量的内容和检索指定的元素,与大小相关的运算允许判定字节大小和矢量中元素不数目。 现针对经常用到的对向量增,删,插功能举例描述:
addElement(Object obj) 把组件加到向量尾部,同时大小加1,向量容量比以前大1
insertElementAt(Object obj, int index) 把组件加到所定索引处,此后的内容向后移动1个单位
setElementAt(Object obj, int index) 把组件加到所定索引处,此处的内容被代替。 removeElement(Object obj)把向量中含有本组件内容移走。 removeAllElements()把向量中所有组件移走,向量大小为0。 例如: import java.lang.System; import java.util.Vector; import java.util.Emumeration; public class Avector{ public static void main(String args[]) {
0. Vector v=new Vector();
1. v.addElement("one");
2. addElement("two");
3. v.addElement("three");
4. v.insertElementAt("zero",0);
5. v.insertElementAt("oop",3);
6. v.setElementAt("three",3);
7. v.setElementAt("four",4);
8. v.removeAllElements();
}
}
Vector中的变化情况:
1. one 2. one 3. one 4. zero 5.zero 6. zero 7. zero 8. two two one one one one three two two two two three oop three three three three four 另外,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中。
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法[转]
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.Vector中的Vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- java.util.vector中的vector的详细用法
- iPhone Programming: Set UITableView Accessory Arrow Style
- VBS简单时间获取教程
- SQl不重复的所有数据(重复的只显示一条)
- 深入学习Make命令和Makefile(上)
- 判断整数序列是不是二元查找树的后序遍历结果
- java.util.vector中的vector的详细用法
- 翻转句子中单词的顺序
- 二叉树两个结点的最低共同父结点
- 树为另一树的子结构
- ubuntu下使用SVN
- 判断二叉树是不是平衡的
- HTML中 meta的作用
- 如何确定一款进销存软件
- Linux系统下视频转换:Mencoder和Ffmpeg资料汇总