111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:3162回复:0

Java的数组(Array)、Vector、ArrayList、HashMap的异同-JSP教程,Java技巧及代码

楼主#
更多 发布于:2010-12-15 13:23
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,非常方便。



喜欢0 评分0
游客

返回顶部