`

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

    博客分类:
  • 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;                                                 
}

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

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

 

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

 

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

 

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

分享到:
评论

相关推荐

    数组和集合

    例如,ArrayList底层基于数组实现,适合随机访问,但在大量数据的中间插入和删除操作性能较差;而LinkedList基于双向链表实现,在列表中间插入和删除操作性能较好,但随机访问性能差。在多线程环境下使用集合时,...

    c#之数组和list转换

    数组的访问速度通常比List&lt;T&gt; 快,因为它的内存是连续分配的,对于需要高效遍历或随机访问的情况,数组是更好的选择。 - **List**:在元素数量不确定或需要频繁添加/删除元素时,List&lt;T&gt; 更为合适。它提供了丰富的...

    用数组实现一个线性表.zip

    在实际编程中,我们常常用数组来实现线性表,因为数组具有连续存储、随机访问等特性,使得操作高效且简单。本教程将深入探讨如何用数组来实现线性表,并涉及其相关的数据操作。 1. **数组的基本概念** 数组是一种...

    java中的数组和集合共2页.pdf.zip

    如果需要固定大小、高效随机访问且无需额外功能,数组是合适的选择。当需要动态调整大小、丰富的操作或保证元素唯一性时,集合更适合。 总之,Java中的数组和集合各有优劣,理解它们的特性和用法是成为一名熟练Java...

    php数组和链表的区别总结 数组和链表.pdf

    1. 当需要快速访问数据,且插入和删除操作较少时,数组是更好的选择,因为它的随机访问速度较快。 2. 如果数据增删频繁,或者初始大小未知,链表更适合,因为它提供了更灵活的内存管理和操作。 在PHP中,虽然原生...

    Java程序设计 3 数组与集合 简图.ppt

    ArrayList是基于动态数组实现的,适合随机访问,插入和删除操作在尾部相对高效;LinkedList则以双向链表实现,适合频繁的插入和删除操作,但随机访问效率较低。Vector是ArrayList的一个旧版实现,线程安全但效率较低...

    数据结构-数组与广义表.ppt

    数组的顺序存储结构意味着所有元素在内存中按特定顺序(如行主序或列主序)连续存放,这使得随机访问元素非常高效,但插入和删除操作相对复杂,因为可能需要移动大量元素。 数组在科学计算中尤其常见,特别是矩阵。...

    vector创建二维数组案例.rar

    由于`vector`支持随机访问,因此访问速度较快。 ```cpp int value = matrix[0][1]; // 访问第一行的第二个元素(值为2) ``` 4. **动态调整大小**:`vector`的一个优点是可以在运行时调整大小。如果需要增加或减少...

    数据结构(数,数组和串,图,线性表,栈和队列)

    数组的索引通常从0开始,允许快速的随机访问。但插入和删除元素可能较慢,因为需要移动大量元素。 3. 字符串:字符串是由字符组成的序列,是处理文本数据的重要数据结构。在许多编程语言中,字符串被视为特殊的数组...

    数据结构 线性表 栈 串 数组 树 图 排序 查找

    数组支持随机访问,但插入和删除操作通常较慢。数组有静态数组和动态数组之分,动态数组如C++中的vector或Java中的ArrayList,允许在运行时调整大小。 5. **树**:树是一种非线性的数据结构,由n(n&gt;0)个有限节点...

    程序模块-C语言数组,链表实现歌手打分程序

    数组的优点是访问速度快,因为它的元素在内存中是连续存放的。我们可以创建一个二维数组来存储歌手的分数,其中第一维表示歌手,第二维表示评委。每个评委对每个歌手的评分都对应数组的一个元素,这样方便我们快速...

    計算機概論 Eng ch-11

    对比数组、记录和链表,数组提供了快速的随机访问,但插入和删除操作相对较慢;记录便于组织多属性数据;链表在插入和删除操作上效率高,但访问速度较慢。选择哪种数据结构取决于具体的应用场景和需求。 学习这些...

    jdk数组的基础上的集合使用及详解.docx

    ArrayList基于动态数组实现,适合随机访问,插入和删除较慢;LinkedList基于双向链表实现,插入和删除快,但随机访问慢。 - Set接口:代表无序且不允许重复元素的集合。Set接口的主要实现类有HashSet和TreeSet。...

    java 数据结构.docx

    随机访问:访问任意位置的元素时间复杂度为O(1)。 示例: java int[] array = new int[5]; array[0] = 10; array[1] = 20; // 访问元素 System.out.println(array[0]); 2. 链表(LinkedList) 定义:链表是一种...

    数据结构实验报告+代码(链表 二叉树 图 字符串 数组 排序 队列 栈)

    数组提供随机访问,但插入和删除操作相对较慢。动态数组如C++的`std::vector`在需要时可以自动调整大小。 6. **排序**:排序是将一组数据按特定顺序排列的过程,常见的排序算法有冒泡排序、选择排序、插入排序、...

    数据结构课程设计辅导.zip

    数组适合于需要随机访问和快速查找的场景,但插入和删除操作效率较低。 2. **链表**:由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表支持快速插入和删除,但在随机访问上不如数组。 3. **栈**:...

    C++_标准模板库(STL)

    Vector内部管理一块连续的内存区域,这使得随机访问变得非常快速,同时,当容器的大小超出预分配空间时,Vector会重新分配更大空间并复制已有元素,虽然这一过程可能导致暂时的性能下降,但在大多数情况下,这种设计...

    LinkedList.zip

    1. 存储效率:ArrayList基于动态数组实现,对于随机访问速度快,而LinkedList对于插入和删除速度快。 2. 内存占用:LinkedList每个元素都包含额外的引用,所以相比于ArrayList,其内存开销更大。 3. 应用场景:如果...

    C++标准程序库(中文)

    1. 动态数组:vector,提供了动态数组的功能,支持快速随机访问和高效插入、删除操作。 2. 双向链表:list,允许在任意位置进行插入和删除,但随机访问效率较低。 3. 链表适配器:forward_list,单向非循环链表,...

Global site tag (gtag.js) - Google Analytics