`

Array和Vector,HashMap的区别 [转]

    博客分类:
  • Java
阅读更多

        [转]自 http://blog.hunan2s.com/article.asp?id=130

        array(数组)和Vector是十分相似的Java构件(constructs),两者全然不同,在选择使用时应根据各自的功能来确定。

1、数组:Java arrays的元素个数不能下标越界,从很大程度上保证了Java程序的安全性,而其他一些语言出现这一问题时常导致灾难性的后果。
        Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再改变。值得注意的是:当Array中的某一元素存放的是Objrct reference 时,Java不会调用默认的构造函数,而是将其初值设为null,当然这跟Java对各类型数据赋默认值的规则是一样的,对基本数据类型同样适用。


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

3、ArrayList:实现了List接口,功能与Vetor一样,只是没有同步机制,当然元素的访问方式为从List中继承而来,可存放任何类型的对象。

4、HashMap:继承了Map接口,实现用Keys来存储和访问Values,Keys和Values都可以为空,它与Hashtable类的区别在于Hashtable类的Keys不能为null,并Hashtable类有同步机制控制,而HashMap类没有。
      在Struts类库中实现了一个LableValueBean,用Lable(Key)来存储和访问Value,很方便。

分享到:
评论

相关推荐

    Java 最常见的 208 道面试题:第二模块答案

    27. ArrayList 和 Vector 的区别是什么? 28. Array 和 ArrayList 有何区别? 29. 在 Queue 中 poll()和 remove()有什么区别? 30. 哪些集合类是线程安全的? 31. 迭代器 Iterator 是什么? 32. Iterator 怎么使用?...

    133道Java面试题及答案(面试必看)

    在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你将会被问到许多 Java 程序员都...

    java7hashmap源码-WeishenTemp:WeishenTemp

    的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你将会被问到许多 Java 程序员都没有看过的领域,如 NIO,设计模式,成熟的单元...

    史上最全java面试,103项重点知识,带目录

    27. ArrayList 和 Vector 的区别是什么? 11 28. Array 和 ArrayList 有何区别? 12 29. 在 Queue 中 poll()和 remove()有什么区别? 12 30. 哪些集合类是线程安全的? 12 31. 迭代器 Iterator 是什么? 12 32. ...

    java面试常见问题

    在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你将会被问到许多 Java 程序员都...

    千方百计笔试题大全

    66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的...

    java面试宝典

    66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的...

    Java常见面试题208道.docx

    27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器 Iterator 是什么? 32.Iterator 怎么使用?有什么...

    DCLX088

    DCLX 这个免费的类库可以为Delphi/Kylix提供ArrayList, LinkedList, Vector, HashMap,HashSet, ArraySet, Queue 和Stack 结构。它也提供了类似STL中的算法(Apply, Found,CountObject, Copy, Generate, Fill, Reverse...

    基于javatcpsocket通信的拆包和装包源码-coding-guide_i3geek-master:编码指南_i3geek-master

    socket通信的拆包和装包源码 程序设计经验总结 一名JAVA程序员,将自己的编程学习之路做以总结并进行分享。内容包括但不限于数据结构、算法、数据库、操作系统、计算机网络等多方面。 目前先暂列目录,内容在逐渐...

    Java弱引用实现源码-coding-guide_i3geek:一名JAVA程序员,将自己的编程学习之路做以总结并进行分享。内容包括但不限于数

    Array Collection Collections List ArrayList LinkedList Vector Set HashMap TreeMap LinkedHashMap ConcerrentHashMap Set TreeMap HashMap synchronized volatile transient implements extends public private ...

    Containers library for Lazarus-开源

    DCL是一个免费的库,可为Delphi / Kylix提供ArrayList,LinkedList,Vector,HashMap,HashSet,ArraySet,Queue和Stack结构,还提供STL中的算法(应用,发现,计数对象,复制,生成,填充,反向,种类...)。

    leetcode中国-Algorithm:还有很长的路要走

    window在hashmap中更新左边界位置,找string中的最长substring Two Pointers 12/10 5 找最长回文子串,暴力遍历奇偶判别法,Manacher‘s Algorithm string 02/15 7 整数反转 string 07/25 9 取余除10进行数字反转...

    The Delphi Container Library-开源

    DCLX 是一个免费库,为 Delphi/Kylix 提供 ArrayList、LinkedList、Vector、HashMap、HashSet、ArraySet、Queue 和 Stack 结构。 它还提供类似于 STL 的算法(应用、发现、计数对象、复制、生成、填充、反向、排序.....

    Java版水果管理系统源码-BAT-Java:Java课堂笔记、代码、java核心知识点梳理、java笔试面试资料

    Array Collection Collections List ArrayList LinkedList Vector Set HashMap TreeMap LinkedHashMap ConcerrentHashMap Set TreeMap HashMap synchronized volatile transient implements extends public private ...

    Note_scalad.tar.gz

    Java_ArrayList_Vector Java_Bubble_Sort Java_ClassLoader Java_Copy_On_Write Java_Exception Java_ExecutorService Java_IO Java_JVM_Monitor Java_Jstat Java_Lambda Java_Memory Java_Node Java_Photo_Base64...

Global site tag (gtag.js) - Google Analytics