付一段大富翁的分析: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,这样,就可以避免重新组织内存并增加大小。

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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