`

快速随机访问和可删除的数组

    博客分类:
  • Java
 
阅读更多

原文链接:http://www.blogjava.net/qujinlong123/archive/2007/08/27/140048.html

 

关键代码:

public Object remove(int index)                                 
{                                                               
  if (index >= size || index < 0)                               
    throw new IndexOutOfBoundsException("Index out of bounds.");
                                                                
  Object value = values[index];                                 
                                                                
  if (index != size - 1)                                        
  {                                                             
    // 将数组最后一个值补充到被移除的位置。                     
    values[index] = values[size - 1];                           
  }                                                             
  values[size - 1] = null; // 防止该位置永久持有对象的引用      
  size --;                                                      
                                                                
  return value;                                                 
}

 就是删除的时候不拷贝复制,而是直接用最后元素代替要删除的元素。

这避免了复制数组,破坏了原来数据的顺序。

 

快速随机访问和快速删除倒是都做到了。

 

使用的时候要考虑数据的顺序是否重要。

 

如果仅是生成随意数据测试,这个方法倒是不错。

分享到:
评论

相关推荐

    JavaScript经典实例

     第14章使用JavaScript、CSS和ARIA创建交互和可访问性效果  第15章创建富媒体和交互应用程序  第16章JavaScript对象  第17章JavaScript库  第18章通信  第19章使用结构化数据  第20章持久化  第21章...

    《你必须知道的495个C语言问题》

    这样是合法的和可移植的吗? 23  2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明不能这样做? 25 2.9 为什么不能用内建的==和!=操作符比较结构? 26 2.10 结构传递和返回是如何实现...

    你必须知道的495个C语言问题

    这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明不能这样做? 2.9 为什么不能用内建的==和!=操作符比较结构? 2.10结构传递和返回是如何实现的? 2.11 ...

    C语言FAQ 常见问题列表

    o 3.13 怎样在运行时用名字访问结构中的域? o 3.14 程序运行正确, 但退出时却 ``core dump''了,怎么回事? o 3.15 可以初始化一个联合吗? o 3.16 枚举和一组预处理的 #define 有什么不同? o 3.17 有什么...

    python cookbook(第3版)

    6.12 读取嵌套和可变长二进制数据 6.13 数据的累加与统计操作 第七章:函数 7.1 可接受任意数量参数的函数 7.2 只接受关键字参数的函数 7.3 给函数参数增加元信息 7.4 返回多个值的函数 7.5 定义有默认参数...

    数据结构(C++)有关练习题

    内容及步骤: 1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,...

    你必须知道的495个C语言问题(PDF)

    2.13 怎样在运行时用名字访问结构中的域? . . . . . . . . . . . . . . . 10 2.14 程序运行正确, 但退出时却“core dump”了,怎么回事? . . . . . 10 2.15 可以初始化一个联合吗? . . . . . . . . . . . . . . ....

    语言程序设计课后习题答案

    C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...

Global site tag (gtag.js) - Google Analytics