CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

ArrayList和Vector的区别

楼主highsea_004(没有脚的鱼)2005-07-21 09:16:21 在 Java / Web 开发 提问

现在我存放数据库里查询出来的纪录一般用Vector存放,但是听说用ArrayList存放要比Vector好,想问问为什么,是取数据的速度更快还是其他别的原因,谢谢  
  下面是我用Vector存放纪录的写的函数,如果改成ArrayList存放该怎么改?  
   
  public   Vector   GetPointtest(){  
              Vector   v=new   Vector();  
              ResultSet   rs;  
              Vector   v_list=new   Vector();  
              dbConnect   dbconQYGG=new   dbConnect();  
              dbconQYGG.dbConnectDerection_QYGG();  
              String   sql="select   id,qymc,qylx   from   yxqy   ";  
              rs=dbconQYGG.executeQuery(sql)   ;  
              try{  
                  while   (rs.next()){  
      v_list.addElement(Point.Point(rs.getInt("id"),rs.getString("qymc"),rs.getString("qylx));  
                  }  
              }  
              catch(Exception   e){  
                  System.err.println(e.getMessage());  
              }  
              finally{  
                  dbconQYGG.close()   ;  
              }  
              return   v_list;  
   
          } 问题点数:100、回复次数:13Top

1 楼otom3(潇雨寒)回复于 2005-07-21 09:45:33 得分 12

很简单的  
   
  ArrayList   al   =   new   ArrayList();  
   
  while(){  
  ....  
  al.add(object);  
  }  
   
  读数据的时候  
  (for   int   i=0;i<al.size();i++){  
        object   =   (Object)al.get(i);  
  }Top

2 楼JohnWoo(JohnWoo)回复于 2005-07-21 09:58:40 得分 12

Vector是JDK旧版本中提供的一个类。Sun本来是想废弃这个类。提倡大家使用新的,就像ArrayList等。可是,Vector提供了内部同步的功能。所以,如果需要同步数据,又不想自己多写代码,很多人还是在使用Vector。  
  所以,性能上要比ArrayList差。  
  最大区别:Vector提供同步机制。ArrayList没有。Top

3 楼highsea_004(没有脚的鱼)回复于 2005-07-21 10:09:38 得分 0

to   JohnWoo(JohnWoo);  
          能说一下同步机制是什么吗?Top

4 楼mofeir(损人专家)回复于 2005-07-21 10:12:48 得分 12

 
  ArrayList   al   =   new   ArrayList();  
   
  while(){  
  ....  
  al.add(object);  
  }  
   
  读数据的时候  
  for(Iterator   iter   =   al.iterator();iter.hasNext();){  
        object   =   (Object)iter.next();  
  }  
  Top

5 楼bevin1010(木瓜)回复于 2005-07-21 10:12:49 得分 6

线程同步,就是线程安全机制,在同一时刻,只允许有一个线程去操作!Top

6 楼dabo1980(Java小菜鸟)回复于 2005-07-21 10:21:10 得分 5

Vector线性安全,ArrayList线性不安全。  
  Vector有同步机制,ArrayList没有同步机制。  
  Top

7 楼mind_1220(大灰狼)回复于 2005-07-21 10:37:00 得分 12

我从本质上简单的告诉你他们的区别  
  Vector在增加一个元素的时候用定长的方法增加。  
  而ArrayList则是以你增加元素的大小来增加。  
   
  正式这样的原理所以有dabo1980(Java小菜鸟)   说的  
  Vector线性安全,ArrayList线性不安全。  
  Vector有同步机制,ArrayList没有同步机制。  
  Top

8 楼wuzhu888(繁华的夜景)回复于 2005-07-21 10:37:02 得分 3

最大区别:Vector提供同步机制。ArrayList没有。  
  Top

9 楼silverend(偶尔转转)回复于 2005-07-21 10:39:09 得分 12

Vector   是用在java   1.0/1.1   中的旧容器。其迭代器取名为:Enumeration   (为一Interface   ,比Iterator   小,只有两个函数)常用的方法如:Enumeration   e   =   vector.elements()   ;  
   
  而ArrayList   为java2中的新容器,极具弹性,可在任意时间选择任一对象;其对应的迭代器为:Iterator   .     Iterator     it   =   arraylist.iterator()   ;  
   
  虽然在java2中,Vector已经过调整,符合Collection和List规格,但总体上还是建议采用新的容器,性能上也自然是ArrayList更优。Top

10 楼creamsmallpig(奶油小猪)回复于 2005-07-21 10:39:51 得分 20

Vector:  
  当更多的元素被加入进来以至超出其容量时,Vector的size会动态增长。  
  同时,Vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了。  
  Vector内部实际是以Array实现的,也通过元素的整数索引来访问元素,但它只能存放java.lang.Object对象,不能用于存放基本类型数据,比如要存放一个整数10,得用new   Integer(10)构造出一个Integer包装类对象再放进去。当Vector中的元素个数发生变化时,   其内部的Array必须重新分配并进行拷贝,因此这是一点值得考虑的效率问题。  
  Vetor同时也实现了List接口,所以也可以算作Colletion了,只是它还特殊在:Vector   is   synchronized。即Vetor对象自身实现了同步机制。  
  ArrayList:实现了List接口,功能与Vetor一样,只是没有同步机制,当然元素的访问方式为从List中继承而来,可存放任何类型的对象。(记得给分哦   嘿嘿)  
  Top

11 楼silverend(偶尔转转)回复于 2005-07-21 10:40:07 得分 3

其使用方法可参考文档,把其对应些方法改掉即可Top

12 楼silverend(偶尔转转)回复于 2005-07-21 10:45:10 得分 3

当然也有某些原因(比如同步问题)采用Vector  
   
  具体看使用了Top

13 楼laughsmile(海边的星空)回复于 2005-07-21 14:32:03 得分 0

Vector所有methods都被宣告為final,无法继承与覆写.   Vector   中的許多重要methods,例如addElement()和elementAt(),都是synchronized。這造成很大的效能负担.   Java   2   的container   library   以ArrayList   淘汰了Vector.  
  当然也有线程同步问题采用Vector.Top

相关问题

  • ArrayList和Vector有何区别?
  • vector和arrayList有什么区别?
  • Vector 和 ArrayList到底有什么区别?
  • Vector 和 ArrayList 有什么区别?
  • ArrayList和Vector的区别,HashMap和Hashtable的区别
  • ArrayList和Vector,HashMap和Hashtable之间的区别??
  • 请问Vector和ArrayList有什么区别啊?
  • ArrayList与Vector应用上的区别?
  • 求hashtable和ArrayList的区别?
  • 求教:ArrayList、Array、Collection、Iterator、Vector的联系与区别?

关键词

  • vector
  • dbconqygg
  • 存放
  • arraylist
  • rs
  • list

得分解答快速导航

  • 帖主:highsea_004
  • otom3
  • JohnWoo
  • mofeir
  • bevin1010
  • dabo1980
  • mind_1220
  • wuzhu888
  • silverend
  • creamsmallpig
  • silverend
  • silverend

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo