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

Vector,HashTable这些类过时了吗? 请高手畅所欲言!!!!

楼主lifxue(纸上谈兵)2004-11-03 14:47:34 在 Java / J2SE / 基础类 提问

刚才看到一位大侠说:没想到有这么多人在用Vector,HashTable这些过时的类.  
  不知各位如何理解,是用法有问题,还是这东西不够时髦了? 问题点数:200、回复次数:23Top

1 楼lifxue(纸上谈兵)回复于 2004-11-03 14:52:20 得分 0

付一段大富翁的分析:  
   
  Vector和ArrayList区别  
      Vector和ArrayList   Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。    
      Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。  
      当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。  
  Hashtable和HashMap区别  
    Hashtable和HashMap它们的性能方面的比较类似   Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。  
  ArrayList和LinkedList区别  
    对于处理一列数据项,Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别。    
      从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能  
      而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。    
      如果在编程中,1,2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。  
      配置集合类的初始大小    
      在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。  
      比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重新组织内存并增加大小。Top

2 楼alaal(for you)回复于 2004-11-03 14:57:09 得分 10

我还在大量使用   :(Top

3 楼lifxue(纸上谈兵)回复于 2004-11-03 14:58:29 得分 0

KeyLife富翁笔记      
  作者:   kiki19  
  标题:   全面接触Java集合框架    
  关键字:   Java集合框架    
  分类:   资料    
  密级:   公开      
   
  http://www.delphibbs.com/keylife/iblog_show.asp?xid=5160Top

4 楼lifxue(纸上谈兵)回复于 2004-11-03 15:01:00 得分 0

任何现实存在的事务都有它存在的必要性,我也觉的不能一言以蔽之,更不能人云亦云Top

5 楼ladofwind(随风)回复于 2004-11-03 15:04:16 得分 10

这也赶时髦?Top

6 楼lifxue(纸上谈兵)回复于 2004-11-03 15:05:07 得分 0

使用ArrayList和Hashmap来替代Vector和Hashtable,这样还能提高一点效率。但是ArrayList和Hashmap都是线程不安全的,而Vector和Hashtable却刚好相反。Top

7 楼umbrella1984(雨伞(KEN))回复于 2004-11-03 15:06:47 得分 10

比较常用Top

8 楼wdman(只提供解决方案,代码另外收分!)回复于 2004-11-03 15:09:17 得分 10

多半使用ArrayList和HashMapTop

9 楼binny(骑个破车看夕阳)回复于 2004-11-03 15:11:14 得分 10

各有各的用处!!!Top

10 楼boris2002()回复于 2004-11-03 15:41:23 得分 10

Vector过时?小声问句:哪个替代的类入时呢?Top

11 楼trumplet(检查)回复于 2004-11-03 15:48:09 得分 10

高深啊!   不怕您笑话,   这些,   俺玩不转.Top

12 楼treeroot(旗鲁特)回复于 2004-11-03 15:54:39 得分 60

好像是我说的也,楼主不要介意  
  http://blog.csdn.net/treeroot/archive/2004/09/18/108814.aspx  
  http://blog.csdn.net/treeroot/archive/2004/09/21/112283.aspxTop

13 楼treeroot(旗鲁特)回复于 2004-11-03 15:56:36 得分 0

大部分情况下是不需要线程安全的,如果需要的话  
  List   l=Collections.synchronizedList(new   ArrayList());  
   
  http://blog.csdn.net/treeroot/archive/2004/10/15/138388.aspx  
  Top

14 楼lifxue(纸上谈兵)回复于 2004-11-03 16:32:00 得分 0

看了   treeroot(根根)的文章,分析的很好啊.  
  难到Vector,HashTable已经完全没有优点,被淘汰了吗?  
   
  有没有反对的声音?没有就关门睡觉了Top

15 楼lifxue(纸上谈兵)回复于 2004-11-03 16:35:02 得分 0

大家都讲讲理嘛,怎么都不讲理  
   
  呵呵,别有歧义啊Top

16 楼sunangel(我想我是海)回复于 2004-11-03 17:13:18 得分 10

markerTop

17 楼duanma(断码)回复于 2004-11-03 18:09:17 得分 10

如果没有用,也就不会放在Java类库里了!  
  存在即是合理。Top

18 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2004-11-03 18:29:46 得分 10

Vector   和   HashTable   虽然不常用,但不能说它们已经过时了。  
  如果它们已经过时了,Sun   会给它们加上   Deprecated   标记的  
   
  最简单的一点:Vector   和   HashTable   都是线程安全的,但   ArrayList   和   HashMap   就不是,需要线程安全的时候,还必须使用   Vector   和   HashTableTop

19 楼kaymo( 。。。 )回复于 2004-11-03 18:35:07 得分 10

没有过时Top

20 楼zouyiyy(靠JAVA混口饭吃)回复于 2004-11-03 18:54:43 得分 10

虽然我也是用arraylist跟hashmap的多,但我觉得这些还是有用的,现在大部分的数据都不需要考虑线程安全,为了性能考虑,还是用没有同步的吧Top

21 楼shaopin(shaopin)回复于 2004-11-03 19:19:29 得分 10

按需取用吧!Top

22 楼alpha15(奥法)回复于 2004-11-03 20:38:54 得分 10

其实用什么东西都是自己的喜好  
  我就有时用arraylist有时又用vector,而且觉得vector比arraylist好用些  
  Top

23 楼debug158(过客)回复于 2004-11-20 16:57:35 得分 0

dingTop

相关问题

  • 畅所欲言!!
  • 关于 MATLAB,畅所欲言
  • 畅所欲言!100分!
  • Welcome: 畅所欲言Delphi vs VC++
  • 200,希望大家畅所欲言
  • 随便谈谈,畅所欲言,一同分享。散分。
  • 关于j2ee的学习,大家畅所欲言,来者有分。
  • 大家请畅所欲言!new String(str.getBytes("UTF-8"));的奇怪问题。
  • 请教数据库设计方案,请畅所欲言
  • 软件多版本的问题,请大家畅所欲言。

关键词

  • .net
  • vector
  • 线程
  • 性能
  • 数据
  • 安全
  • 框架
  • arraylist
  • hashtable
  • 元素

得分解答快速导航

  • 帖主:lifxue
  • alaal
  • ladofwind
  • umbrella1984
  • wdman
  • binny
  • boris2002
  • trumplet
  • treeroot
  • sunangel
  • duanma
  • jamesfancy
  • kaymo
  • zouyiyy
  • shaopin
  • alpha15

相关链接

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

广告也精彩

反馈

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