想了解一下它的具体实现原理,怎么实现动态扩展,任意增删,存取,修改,装箱拆箱,父类等等.虽然2.0里已经过时了,但是不失为一个好的数据结构例子,有人有这方面的文章么?谢谢

解决方案 »

  1.   

    arraylist是一个动态双向链表,内有指针进行定位任意增删,存取,修改
      

  2.   

    是动态双向链表么?那么
    ArrayList arr=new ArrayList();
    arr[i];
    里,如果i 比较大的话寻找相应位置不是很费时间
      

  3.   

    我觉得arraylist的功能中按号存取和随地的插入和删除是不能同时实现的
      

  4.   

    看过java源代码,它的内部是一个Object数组来控制的,添加的时候会判断时候超过数组大小,如果有,重新建立一个更大容量(通常是翻倍)的Object数组,添加是将数组中的某个元素赋值,删除是将其设置为null,至于遍历什么的,内部根据数组下标就可以了。
    .net的原理也是类似的。
      

  5.   

    不是不能同时实现,是不能同时高效的实现的.
    如果类似于链表,则arr[i]这种操作就很费事,如果是动态数组实现,则插入和删除某个位置的元素则其后的所有元素的位置都要移动.
      

  6.   

    int capacity;//容量
    _items=new object[capacity];//实际存放数组
    int _count;//数组中实际使用的存储单元数void Add(object item)
    {
        if(_count==capacity)
        {
            IncreaseCapacity();//扩容函数
        }
        _item[_count]=item;
    }void IncreaseCapacity()
    {
        int size=capacity*2;
        object [] oldarray=_items;
        _items=new object[size];
        oldarray.copeto(_items,0);
    }
    那么insert和removeat呢?在某个指定的位置添加删除元素
      

  7.   

    找个反汇编工具Reflector,反汇编出源代码,自己研究:)
      

  8.   

    给你个地址
    http://topic.csdn.net/t/20060113/11/4514735.html