基本操作示例

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(integer1);
v1.addElement("two");
v1.addElement(new Integer(2));
v1.addElement(integer1);
v1.addElement(integer1);
//转为字符串并打印
System.out.println("The Vector v1 is:\n\t"+v1);
//向指定位置插入新对象
v1.insertElement("three",2);
v1.insertElement(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.removeElement(integer1);
//从向量对象v1中删除对象integer1
//由于存在多个integer1,所以从头开始。
//找删除找到的第一个integer1.
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();
//使用枚举类(Enumeration)的方法取得向量对象的每个元素。
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));
//按不同的方向查找对象integer1所处的位置
v1.setSize(4);
System.out.println("The new Vector(resized the vector)is:"+v1);
//重新设置v1的大小,多余的元素被抛弃
}
}
运行结果:
E:\java01>java VectorApp The vector v1 is:[one,1,1,two,2,1,1] The vector v1(used method insetElementAt()) is: [one,1,three,3.9,1,two,2,1,1] The vector v1(used method setElementAt()) is: [one,1,four,3.9,1,two,2,1,1] The vector v1(useed method removeElement()) is: one four 3.9 1 two 2 1 1 The position of object1(top-to-botton):3 The position of object1(botton-to-top):7 The new Vector(resized the vector) is: [one,four,3.9,1]
Vertor的1倍扩容
还记得ArrayList每次扩容为元数组的0.5倍不?Vector在进行扩容操作时与ArrayList略微不同
protected int capacityIncrement;//用于指定每次扩容的容量
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
capacityIncrement : oldCapacity);//如不指定capacityIncrement,默认扩容的容量为原数组的容量
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}
细心的小伙伴可以发现Vector中多了一个capacityIncrement变量,该变量是用于指定每次扩容的增量,如果不指定该变量,在grow中可以发现Vector默认就扩容为原数组的1倍
线程安全
Vertor是线程安全的!
Vertor源码中另一个比较显眼的地方就是绝大部分方法都有synchronized关键字,大家都知道这个关键字是用于线程同步的,所以Vector类是线程安全的!
但是即使它所有的方法都被修饰成同步,也不意味着调用它的时候永远都不需要同步手段了:
private static Vector<Integer> vector=new Vector<Integer>();
public static void main(String[] args) {
while(true)
{
for(int i=0;i<10;i++)
{
vector.add(i);
}
Thread removeThread=new Thread(new Runnable(){
@Override
public void run()
{
for(int i=0;i<vector.size();i++)
{
vector.remove(i);
}
}
});
Thread printThread=new Thread(new Runnable(){
@Override
public void run()
{
for(int i=0;i<vector.size();i++)
{
System.out.println(vector.get(i));
}
}
});
removeThread.start();
printThread.start();
while(Thread.activeCount()>20);
}
}
大家运行此段代码时 跑了一小段时间之后会发现有ArrayIndexOutOfBoundsException异常,这里Vector的get,remove,size方法尽管有synchronized修饰,但是在多线程环境中,如果不在方法端额外做同步措施的话,这段代码仍然是不安全的,如果一个线程删除了序号i的元素之后,另一个线程去访问这个i的话就直接回抛异常,所以保证这段代码安全还需要再run里面再添加synchronized修饰。
希望本篇vector类使用示例文章对您有所帮助
# Java中vector类用方法详解
# Java
# vector用法
# Java中Vector与ArrayList的区别详解
# JAVA Vector源码解析和示例代码
# 详解Java编程中向量(Vector)的应用
# Java中的vector类使用示例小结
# Java 中的vector和list的区别和使用实例详解
# 详解Java中的Vector
# Java vector的详解及实例
# Java中的Vector详细解读
# java中vector与hashtable操作实例分享
# java ArrayList和Vector的区别详解
# java中Vector的详细说明
# 这段
# 也不
# 都有
# 第一个
# 大家都
# 多个
# 不需要
# 跑了
# 仍然是
# 永远都
# 后会
# 设置为
# 所处
# 对您
# 如不
# 还需
# 使它
# 不安全
# 多线程
# 要再
相关文章:
已有域名能否直接搭建网站?
建站之星2.7模板:企业网站建设与h5定制设计专题
太平洋网站制作公司,网络用语太平洋是什么意思?
如何在橙子建站中快速调整背景颜色?
高端建站如何打造兼具美学与转化的品牌官网?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
宁波免费建站如何选择可靠模板与平台?
婚礼视频制作网站,学习*后期制作的网站有哪些?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何在建站宝盒中设置产品搜索功能?
建站主机数据库如何配置才能提升网站性能?
完全自定义免费建站平台:主题模板在线生成一站式服务
建站之星与建站宝盒如何选择最佳方案?
Thinkphp 中 distinct 的用法解析
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
小型网站制作HTML,*游戏网站怎么搭建?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
油猴 教程,油猴搜脚本为什么会网页无法显示?
建站之星安装后界面空白如何解决?
如何快速搭建安全的FTP站点?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
如何在搬瓦工VPS快速搭建网站?
如何选择适合PHP云建站的开源框架?
香港服务器租用费用高吗?如何避免常见误区?
中山网站推广排名,中山信息港登录入口?
如何在IIS7上新建站点并设置安全权限?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何通过虚拟机搭建网站?详细步骤解析
北京网站制作公司哪家好一点,北京租房网站有哪些?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何在七牛云存储上搭建网站并设置自定义域名?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
网站网页制作专业公司,怎样制作自己的网页?
独立制作一个网站多少钱,建立网站需要花多少钱?
济南专业网站制作公司,济南信息工程学校怎么样?
建站VPS选购需注意哪些关键参数?
如何通过虚拟主机空间快速建站?
深圳网站制作的公司有哪些,dido官方网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速搭建高效可靠的建站解决方案?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何快速搭建FTP站点实现文件共享?
建站之星如何配置系统实现高效建站?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。