首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(1). 基于数组的列表实现ArrayList

2012-09-10 
(一). 基于数组的列表实现ArrayList这些天一直纠结于散列表的总结, 感觉自己对散列表的理解还可以, 源代码

(一). 基于数组的列表实现ArrayList


这些天一直纠结于散列表的总结, 感觉自己对散列表的理解还可以, 源代码也深究了一些, 但是一到要写的时候就找不到好的思路, 只好从基本的开始写, 希望能为后续的散列表总结找到一些思路...

ArrayList是基于数组实现的, 它在一个连续的储存块中储存元素, 不过与数组不同的是: ArrayList可以进行动态的增长, 通俗一点说就是: 当数组不足以容纳更多的元素时, 我们就再建立一个新的,更长的数组, 将原数组的元素拷贝到新数组里, 再对这个新数组进行操作.?

?

首先分析一下它的基本功能:


1.添加操作:将指定索引位置后所有元素向后移动, 再将要插入的数据插入到空出来的指定索引位置.

?(1). 基于数组的列表实现ArrayList

2.删除操作:

删除操作和插入操作有点类似, 是将指定索引后的元素都向前移动, 想当于插入操作的逆过程.


3.查找操作:

1)给定索引, 可直接查找指定索引出的元素

2)给定值, 则需要遍历


4.修改操作: ?

给定索引直接替换原值


下面看一下具体的代码实现:


?


下面请看测试:

?

?

?

?

结果为:

自实现列表的需要所需要的时间为 : 486

系统列表所需要的时间为 : 453

?

?

?


结果为:

自实现列表的需要所需要的时间为 : 967

系统列表所需要的时间为 : 811


?

?

?

? 结果为:

自实现列表的需要所需要的时间为 : 998

系统列表所需要的时间为 : 842


总结:?

1. ArrayList可以高效的随机访问元素

2.?在ArrayList中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;

3.?ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间


也就是说: ?当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 但是如果需要频繁的进行插入删除等操作, ArrayList的缺点就会很明显了, 这时可以选择LinkedList, 有关LinkedList的实现, 将在下一篇博客中分析.





热点排行