说说集合类中的ArrayList,LinkdList,HashMap,Vector四个类相互间的一些联系和区别好不?嘿嘿

解决方案 »

  1.   

    ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制,ArrayList代表大小可变的数组,允许对元素进行快速随机访问,但向List中间进行添加移除元素操作时效率很差,LinkedList采用了链表数据结构,对顺序访问进行了优化,提高了向List中间位置进行操作的效率。Vector的作用跟ArrayList差不多,只是区别于一个实现了同步机制,一个没有。HashMap是Map的一个实现类,采用了哈希算法来存取Key对象,具有很好的存取性能。并且允许将null作为Map的Key或Value,HashMap也是没有实现同步机制的。书上有很详细的介绍,
      

  2.   

    学了数据结构后你也可以写自己的ArrayList,LinkdList,HashMap,Vector嘿嘿
      

  3.   

    HashMap和其他3个没有可比性。AL, LL, V都是List,AL、V都是基于动态数组,而LL基于(双向)链表、因而LL更适于频繁进行插、删的操作
    AL、LL的方法都不是synchronzied,而V是synchronized的
    由于LL是链表,所以不存在初始大小、扩大策略等问题
    AL、V的构造函数里都可以指定初始大小、且默认都是10(所以在能够确定你要放的东西个数的大概范围时应该事先指定,避免多次重新分配空间)
    AL在需要扩大的时候 * 1.5,而V默认 * 2,且V可以指定每次固定变大一个尺寸,比如每次扩大10,而不是翻倍
    3者的构造函数,还有addAll方法能够帮助彼此之间转换,用以在不同阶段的大批量操作下,提高性能
    V的岁数比较大,属于JDK中的元老。早在java.util.Collection/List还没出现之前的JDK 1.0里,就有了。所以某些情况下,比如MS VM下也通用Applet,只能用Vector
      

  4.   

    向 shine333(enihs) 学习。。
    呵呵
      

  5.   

    Vector好象有一段时间被deprecated了,不过在1.6里面组知道怎么的,又重新定义了吧