当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 相关源码下载:javaresearch.org/dn/java1.4src/java/util/ArrayList.java target=_blank>java.util.ArrayListjavaresearch.org/dn/java1.4src/java/util/A...
 

 

 ·java开发工具大比拼    »显示摘要«
    摘要: 引子 ------------------------------------------------------------------------------------------------- 平台中立性是java的本质特性, 它使得java无与伦比地适合于以网络为中心的计算。 如 果 你 正 在 开 发java应用程序,并且希望它能够运行于从网络计算机到unix工作站等......
    摘要: -------------------------------------------------------------------------------- 作者:经乾、郭镇、赵伟 本文选自:中国计算机报 2002年03月11日 一、java中的远程方法调用 远程方法调用(remote method invocation, rmi)是java1.1引入的分布式......


Java 2源码解读1:java.util.ArrayList
相关源码下载:

javaresearch.org/dn/java1.4src/java/util/abstractlist.java target=_blank>java.util.abstractlist 【程序编程相关:第一讲 Java语言概况

javaresearch.org/dn/java1.4src/java/util/arraylist.java target=_blank>java.util.arraylist 【推荐阅读:第二十二讲 网络功能(二)

arraylist是list接口的一个可变长数组实现.实现了所有list接口的操作,并允许存储null值.除了没有进行同步,arraylist基本等同于vector.在vector中几乎对所有的方法都进行了同步,但arraylist仅对writeobject与readobject进行了同步,其它比如add(object).remove(int)等都没有同步. 【扩展信息:第十五讲 交互效果(一)

javaresearch.org/dn/java1.4src/java/util/list.java target=_blank>java.util.list

1.存储

arraylist使用一个object的数组存储元素.

private transient object elementdata[];

arraylist实现了java.io.serializable接口,这儿的transient标示这个属性不需要自动序列化.下面会在writeobject()方法中详细讲解为什么要这样作.

2.add与remove

public boolean add(object o) {

ensurecapacity(size + 1); // increments modcount!!

elementdata[size++] = o;

return true;

}

注意这儿的ensurecapacity()方法,它的作用是保证elementdata数组的长度可以容纳一个新元素.在“自动变长机制”中将详细讲解.

public object remove(int index) {

rangecheck(index);

modcount++;

object oldvalue = elementdata[index];

int nummoved = size - index - 1;

if (nummoved > 0)

system.arraycopy(elementdata, index+1, elementdata, index,

nummoved);

elementdata[--size] = null; // let gc do its work

return oldvalue;

}

rangecheck()的作用是进行边界检查.由于arraylist采用一个对象数组存储元素,所以在删除一个元素时需要把后面的元素前移.删除一个元素时只是把该元素在elementdata数组中的引用置为null,具体的对象的销毁由垃圾收集器负责.
...   下一页
 ·学习使用 manifest    »显示摘要«
    摘要: 简化java应用程序的打包和发布 发布java应用程序时你会感到困难?好在java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包java code的几种方法,我们将会探讨java manifest 文件,给出用于管理jar文件所依赖文件、估计跨平台发布所需的classpath的合适方法.我也会解释如何使用manifest包版本特性来确认包的兼容性.........
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE