请问一下1.1中的arraylist的实现机制 想了解一下它的具体实现原理,怎么实现动态扩展,任意增删,存取,修改,装箱拆箱,父类等等.虽然2.0里已经过时了,但是不失为一个好的数据结构例子,有人有这方面的文章么?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 arraylist是一个动态双向链表,内有指针进行定位任意增删,存取,修改 是动态双向链表么?那么ArrayList arr=new ArrayList();arr[i];里,如果i 比较大的话寻找相应位置不是很费时间 我觉得arraylist的功能中按号存取和随地的插入和删除是不能同时实现的 看过java源代码,它的内部是一个Object数组来控制的,添加的时候会判断时候超过数组大小,如果有,重新建立一个更大容量(通常是翻倍)的Object数组,添加是将数组中的某个元素赋值,删除是将其设置为null,至于遍历什么的,内部根据数组下标就可以了。.net的原理也是类似的。 不是不能同时实现,是不能同时高效的实现的.如果类似于链表,则arr[i]这种操作就很费事,如果是动态数组实现,则插入和删除某个位置的元素则其后的所有元素的位置都要移动. 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呢?在某个指定的位置添加删除元素 找个反汇编工具Reflector,反汇编出源代码,自己研究:) 给你个地址http://topic.csdn.net/t/20060113/11/4514735.html C# CheckedListBox移除打钩项的问题 C# 语法错误? C# winForm调用ping命令 cmd窗口消失 Win7下出現CS0234錯誤,System.Data找不到 C#操作文本文件 查找 位置 PropertyGrid属性翻译问题 各位前辈,帮我看下这小段代码~ 请问这句话什么意思 DATAGRID在线编辑时,如何为模板列添加事件? c# toolTip listview分页问题? 请教一个问题
ArrayList arr=new ArrayList();
arr[i];
里,如果i 比较大的话寻找相应位置不是很费时间
.net的原理也是类似的。
如果类似于链表,则arr[i]这种操作就很费事,如果是动态数组实现,则插入和删除某个位置的元素则其后的所有元素的位置都要移动.
_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呢?在某个指定的位置添加删除元素
http://topic.csdn.net/t/20060113/11/4514735.html