当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: ArrayList是List接口的一个可变长数组实现。
 

 

 ·关于map和list的性能测试报告    »显示摘要«
    摘要: 说明:我所涉及到的试验代码,均是针对于1百万条记录,我的硬件配置如下:cpup4 1.5g,256m ddr的内存。 如果要试验其代码,要采用这种方式运行:java -xms128m -xmx250m testmap 1,对内存容量的要求 map对象高于list。因为map除了value外还需要一个object的key,从而增大了map的容量。试验代码如下: import......
    摘要: java 1.1通过对java语言规范进行修改,显著简化了一些实用结构的实现。在那些修改中,最引人注目的就是内部类和匿名类。如运用得当,它们可使程序更易理解和维护。下面来看看这些特性具体是如何工作的,如何正确使用它们,以及如何避免一些常见的错误。 内部类 简单地说,“内部类”是在另一个类的内部声明的类。从java 1.1开始,你可在一个类中声明另一个类,这与声明字......


Java源码解读之util.ArrayList
arraylist是list接口的一个可变长数组实现.实现了所有list接口的操作,并允许存储null值.除了没有进行同步,arraylist基本等同于vector.在vector中几乎对所有的方法都进行了同步,但arraylist仅对writeobject与readobject进行了同步,其它比如add(object).remove(int)等都没有同步.  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,具体的对象的销毁由垃圾收集器负责.   modcount的作用将在下面的“iterator()中的同步”中说明.   注:在前移时使用了system提供的一个实用方法:arraycopy(),在本例中可以看出system.arraycopy()方法可以对同一个数组进行操作,这个方法是一个native方法,如果对同一个数组进行操作时,会首先把从源部分拷贝到一个临时数组,在把临时数组的元素拷贝到目标位置.   3.自动变长机制   在实例化一个arraylist时,你可以指定一个初始容量.
...   下一页
    摘要: //package /* 运行本程序你需要下载jce,bouncy castle的jce with provider and lightweight api 网止是 http://www.bouncycastle.org 配置如下: 在windows中,你需要把下载的bcprov-jdk14-119.jar文件拷贝到两个地方: 一个在你安装的jdk目录中,比如......
» 本期热门文章:

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