当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Java调集框架操纵注意事项(一, List)[Java编程]

赞助商链接



  本文“Java调集框架操纵注意事项(一, List)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

List的有效实现

1.ArrayList

2.LinkedList

3.Vector

4.Stack

谈论1:底层机制(牵扯到的数据构造的知识请读者自行复习)

ArrayList与Vector都是基于数组实现的,这就阐明ArrayList与Vector合适做遍历而不合适做频繁的插入和删除.

LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象.

谈论2:特别功效

Stack是一个后进先出(LIFO)对象仓库,而LinkedList除可以被用作仓库外,还可以被用作行列或双端行列.

差别的是Stack担当自Vector,也就是说它也是基于数组实现的.

谈论3:内存占用

基于数组实现的List,在动态扩大时会产生新的数组,然后把旧数组里的内容复制到新数组里,

这会产生大量的不再被利用的对象引用变量等候系统回收.而基于链表实现的List就不会有这种问题.

谈论4:同步问题

Vector与Stack生来就是同步的,而ArrayList与LinkedList需求利用Collections.synchronizedList(List list)办法来转换成同步List.

从它们的对象上返回的迭代器是快速失利的,也就是说在利用迭代器举行迭代的时刻,必须利用迭代器本身的remove、add、set

办法来增添或更改List元素,假如在迭代的同时,在其他线程中从构造上改正了List(构造上的改恰是指任何增添或删除一个或多个元素的操作,大概显式调整底层数组的大小;仅仅设置元素的值不是构造上的改正),快速失利迭代器会尽最大勤奋抛出ConcurrentModificationException.

谈论5:利用战略

假如数据被从数据源提取,数据量不肯定,该数据一经被提取后就几近不会再增添或删除,那么应当成立一个LinkedList来保存从数据源中取出的数据,然后将该LinkedList转换成ArrayList来优化遍历操作.反过来,数据量肯定的数据从数据源取出可以先成立一个ArrayList来保存,按照需求如需频繁增删,就转换为LinkedList,如频繁遍历就不需转换.

转换的办法就是利用对应的List类来封装目标List对象.如

ArrayList al = new ArrayList();

LinkedList ll = new LinkedList(al);

同理反过来也可以

LinkedList ll = new LinkedList();

ArrayList al = new ArrayList(ll);

谈论6:toArray()办法

基于数组实现的List会直接返回一个底层数组的拷贝(利用了System.arraycopy办法),基于链表实现的List会新生成一个数组.

谈论7:不可改正

通过利用Collections.unmodifiableList(List list)来生成一个不可改正的List,试图改正返回的列表,不管是直接改正还是通过其迭代器举行改正,都将招致抛出UnsupportedOperationException.

谈论8:遍历器

请尽大概利用Iterator,Enumeration已不被鼓舞利用.

最后,请参考java.util.Collections类,该类供应了很多有效的操作调集对象的办法.


  以上是“Java调集框架操纵注意事项(一, List)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .