国信蓝点Java培训3G培训

最前沿的培训课程最专业的标准化教材最主流的课程体系和技术结构标准可视化培训模式国信蓝点java视频在线

java编程和企业应用热点

查看更多

 

Java培训:Java中的静态数组与动态数组

-----------------------------------------------------------------------------

2011-12-06 来源:网络

 

    我们学习的数组都是静态数组,其实在很多的时候,静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组,动态数组中的各个元素类型也是一致的,不过这种类型已经是用一个非常大的类型来揽括—Object类型。 

    Object类是JAVA.LANG包中的顶层超类。所有的类型都可以与Object类型兼容,所以我们可以将任何Object类型添加至属于 Object类型的数组中,能添加Object类型的的集合有ArrayList、Vector及LinkedList,它们对数据的存放形式仿造于数组,属于集合类,下面是他们的特点:

 

    特点一、容量扩充性

 

    从内部实现机制来讲ArrayList和Vector都是使用Objec的数组形式来存储的。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用 Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。

 

    特点二、同步性

 

    ArrayList,LinkedList是不同步的,而Vestor是的。所以如果要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费开销。但在多线程的情况下,有时候就不得不使用Vector了。当然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但效率可能会有所降低。

 

    特点三、数据操作效率

 

    ArrayList和Vector中,从指定的位置(用index)检索一个对象,或在集合的末尾插入、删除一个对象的时间是一样的,可表示为O(1)。但是,如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。为什么会这样呢?以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行(n-i)个对象的位移操作。

 

    LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。

 

    所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择LinkedList

 

    ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快。【本信息来源于 国信蓝点 java培训中心】

(如果您想了解更多的信息请查看  国信蓝点java/3G培训中心 http://www.fsailing.com )

 

 

分享到:

关于JAVA

国信蓝点Java培训3G培训

国信蓝点Java培训3G培训

Java是目前世界上最流行的计算机编程语 言,全球有25亿Java器件运行着Java,450 多万Java开发者活跃在地球的每个角落,数 以千万计的Web用户每次上网都亲历Java的威 力。今天,Java运行在7.08亿手机、10亿智 能卡和7亿PC机上,并为28款可兼容的应用服 务器提供了功能强大的平台。这么多应用, 彻底改变了用户的生活。越来越多的企业, 因为使用了Java而提高了生产效率。在中国, 越来越多的用户,因为Java而降低了成本, 享受了生活。


目前,我国对软件人才的需求已达20万,并 且以每年20%左右的速度增长。在未来5年内, 合格软件人才的需求将远大于供给。根据IDC 的统计数字,在所有软件开发类人才的需求中, 对JAVA工程师的需求达到全部需求量的60%~ 70%。据调查,以北京为例,软件工程师每年 需求50000人左右。据IT英才网的数据显示: 北京IT职场每月需求达3380个。根据中华英才 网人才研究中心提供的薪酬数据显示,具有代 表性的北京、上海、广州、深圳、山东五地, 高级软件开发工程师的年薪一般在12万元左右, 高收入者能达到17万元—20万元。