自己动手实现ArrayList

ArrayList的一个C++类模板实现 采用双层散列实现的一个ArrayList类模板,可以支持20M以上个数的对象的列表,利用双层链表做的一个散列实现,查询、插入的执行效率非常快。 立即下载

实现了ArrayList的增删改查方法,直接上代码。。。

public class YmhArrayList {
    private Object[] elements;
    private int size;

    public YmhArrayList() {
        this(10);
    }

    public YmhArrayList(int size) {
        elements = new Object[size];
    }

    //增
    public void add(Object obj) {
        capacityCheck();
        elements[size++] = obj;
    }

    public void add(int index, Object obj) {
        rangecheck(index);
        capacityCheck();
        int moveCount = size - index;
        if (moveCount > 0)
            System.arraycopy(elements, index, elements, index + 1, moveCount);
        elements[index] = obj;
        size++;
    }


    //删
    public Object remove(int index) {
        rangecheck(index);
        Object oldValue = elements[index];
        int moveCount = size - 1 - index;
        if (moveCount > 0)
            System.arraycopy(elements, index + 1, elements, index, moveCount);
        elements[--size] = null; // clear to let GC do its work
        return oldValue;
    }

    public boolean remove(Object obj) {
        if (obj == null) {
            for (int i = 0; i < size; i++) {
                if (elements[i] == null) {
                    remove(i);
                    return true;
                }
            }
        } else {
            for (int i = 0; i < size; i++) {
                if (elements[i].equals(obj)) {
                    remove(i);
                    return true;
                }
            }
        }
        return false;
    }

    //改
    public Object set(int index, Object obj) {
        rangecheck(index);
        Object oldValue = elements[index];
        elements[index] = obj;
        return oldValue;
    }

    //查
    public Object get(int index) {
        rangecheck(index);
        return elements[index];
    }

    private void rangecheck(int index) {
        if (index < 0 || index > elements.length - 1) {
            try {
                throw new MyException();
            } catch (MyException e) {
                e.printStackTrace();
            }
        }
    }

    private void capacityCheck() {
        if (size > elements.length - 1) {
            Object[] newElements = new Object[size * 2];
            System.arraycopy(elements, 0, newElements, 0, size);
            elements = newElements;
        }
    }

    public int size() {
        return size;
    }
}
C++ArrayList 用C++写的,仿java的ArrayList类,可以进行增删改查等 立即下载

相关推荐

自定义实现的ArrayList

自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构

【C++】arrayList类的实现

lineartList.h : #pragma once template<class T> class lineartList { public: virtual ~lineartList() {}; virtual bool empty() const = 0; // 判断线性表是否为空 virtual int size() const = 0; // 返回线性表的长度 virtual T& get(int theIndex) const = 0; //返回索引为t

清风微醺的博客 2256

URDF模型转换实战:解决SolidWorks到Gazebo的五大常见问题

本文详细解析了从SolidWorks导出URDF模型到Gazebo仿真过程中常见的五大问题及解决方案,包括插件安装、坐标系建立、Link与Joint配置等关键步骤。通过实战经验分享,帮助机器人仿真工程师高效完成模型转换,确保Gazebo仿真准确性。

weixin_29052717的博客 445

C++数据结构之--ArrayList(数组实现list)详解

ArrayList&动态数组&链表

who_I_am__的博客 2201

P4VASP的安装 & 使用P4VASP画DOS(态密度)图

P4vasp 下载: 链接:https://pan.baidu.com/s/1JIptQVSFSopQls9CiSIoVA 提取码:sbhi 由于是免安装版本,直接右击解压即可,将出现以下文件: 双击既可运行P4vasp: 关于P4vasp的基本使用(使用P4vasp画DOS) 这里以vasp计算为例 首先导出DOS计算的文件夹中的vasprun.xml文件 从p4vasp导入该文件进行作图(直接将vasprun.xml拖入p4vasp一般不会有反应) 具体步骤: 点击open: 在弹出的弹窗

qq_42168543的博客 5万+

STM32踩坑--NoST-LINK detected

这里出现的NoST-LINK detected是没有扫描到端口 在我使用一段Fly-MCU后,有一天突然发现出现如上错误,再检查的过程中检查以下几点 1.STM32 魔术棒的设置 1.1Debug设置 1.2 utilities 设置没有问题,与原来一样又看了下端口——在设备管理器中;也没有问题 ...

qq_53002477的博客 2万+

delphi的ArrayList

本文转载自Top.hand《delphi的ArrayList》 delphi可以用Classes.TList类来实现ArrayList功能.注意:add()方法存入的类型是TPoint,所以必须根据实际类型定义好相关的指针类型. procedure TForm1.Button1Click(Sender: TObject);var aa:TList; a1,a2:Strin...

weixin_30236595的博客 501

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

Dellphi实现C#中ArrayList数组列表以及Delphi中的TSTRINGS、TSTRINGLIST、TLIST对应关系

Delphi中TStringlist与TStrings继承关系 TObject  | TPersistent  | TStrings  | TStringList TList与其他两个没什么联系 TObject  | TList 具体应用中要分析实际需求选择,一般如果都是处理字符串列表,笔者建议用Delphi中的TStringList对应C#中ArrayList,可以满足大部分开发需求,主要是用...

Delphi开发局QQ群:32422310 935

【Python】SimpleITK使用笔记

1. 概念 1.1 nii格式 1.2 SimpleITK 1.3 SimpleITK 图像 2. 基本操作 2.1 常见属性 2.1 读取和保存图像 2.2 SimpleITK图像数据和Numpy矩阵数据之间的转换

See_Star的博客 7899

别再只会用官网例子了!Vxe-Table过滤功能深度自定义:从下拉框到服务端筛选的完整配置流程

本文深入解析Vxe-Table表格组件的过滤功能,从基础UI定制到服务端筛选的完整实现流程。通过实战案例演示如何超越官方示例,实现下拉框、日期范围等复杂过滤交互,并详细讲解混合过滤策略与性能优化技巧,帮助开发者应对大数据量场景下的表格筛选需求。

weixin_42526353的博客 206

【Java】ArrayList(集合)超详解

什么是集合​ 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变ArrayList集合的特点​ 底层是数组实现的,长度可以变化泛型的使用​ 用于约束集合中存储元素的数据类型。

接着奏乐接着舞的博客 1万+

学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模

本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构

xiaoheshang_123的博客 210

动手实现ArrayList

ArrayList大家应经常用吧。今天我们来做一个仿照的MyList实现起来也很简单一、成员变量    我们要存数据,那么得有一个泛型数组,还要有List的长度,还有List的容量。    属性定义如下//存放数据的数组 protected T[] data; //数组的长度 protected int length; //数组的容量 private int capacity;二、接下来是各种操作...

yanghan1222的博客 553

【CAD二次开发】炸开所有的嵌套块

代码】【CAD二次开发】炸开所有的嵌套块。

1515

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【动手实现系列】手撕ArrayList

文章目录说到前面实现ArrayList基本操作结构定义初始化集合初始化指定容量大小的集合添加元素将元素添加到集合中的指定位置将元素直接添加到集合尾部移除集合中的所有元素返回集合中首次出现的指定元素的索引查找集合中是否包含指定的元素返回集合中指定位置上的元素判断集合是否为空返回集合中最后一次出现的指定元素的索引移除集合中指定位置上的元素移除集合中首次出现的指定元素(如果存在)用指定的元素替代集合中指...

。。。 4356

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

arraylist 的扩容机制_动手实现 ArrayList

纸上学来终究浅,只有自己实操了才能理解的更深刻问题平时工作中 ArrayList 经常会用到,但是没细想底层实现原理。比如这里抛出几个问题:添加、删除元素的时候,具体是怎么实现的?初始化的时候数组大小是多少,扩容机制?如果让你来实现的话,你会怎么做?分析源码看源码,首先要看类注释,我们看看类注释上面都说了什么,如下:允许 put null 值,会自动扩容size、isEmpty、get、set、...

weixin_39981624的博客 78

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

自己动手实现ArrayList和LinkedList

jdk中的ArrayList就是一个不断扩大的数组,扩大后数组长度为(前数组长度*3)/2+1 package com.cbxjj.iterator; import java.util.Arrays; public class ArrayList { private int index = 0;// list长度 static Object[] objects = new Objec

cbxjj的专栏 727

php实现arraylist结构体,数据结构之自己动手实现一个ArrayList

List接口首先我们需要定义所有需要的方法,比如添删该查等public interface List {/*** 返回线性表的大小,即数据的元素*/int size();/*** 根据索引获得数据元素*/E get(int index);/*** 线性表是否为空*/boolean isEmpty();/*** 线性表是否包含元素*/boolean contains(Object o);/*** 返...

weixin_33595317的博客 268

自己动手系列——实现一个简单的ArrayList

ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。处于练手的目的,实现一个简单的ArrayList,并且把实现的过程在此记录。 实现的ArrayList主要的功能如下: 默认构造器和一个参数的有参构造器 add方法 get方法 indexOf方法 contains方法 size方法 isEmpty方法 re...

weixin_30832983的博客 199

动手实现ArrayList和LinkedList

对ArrayLIst和LinkedList的实现

GeorgeWSZ的博客 205

自己动手实现集合框架类(一)之ArrayList

Arraylist的底层实现,数组结构

迪迪调调的博客 344

数据结构动手系列-基于数组实现ArrayList

基于数组实现ArrayList

知识共享,你我皆是知识的搬运工 267

java arraylist 结构体_数据结构与算法-如何自己动手实现一个java.util.ArrayList

在深入浅出数据结构这一篇中说道:数据元素的物理存储结构形式有两种:顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。实际上就是基于数组实现的数据结构链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系,需要用一个指针存放数据元素的地址,通过地址就可以找到相关联数据元素的位置。实...

weixin_33898154的博客 186

每天动手敲arrayList底层源码(一)

前言: 为了更加深入了解array List,我决定每天动手底层敲敲源码。 每天动手敲一点,健康长寿一百年。。。 今天敲一个add代码 package collection.Array; import collection.List; import java.util.Iterator; public class ArrayList<T> implements List<T> { /** * 默认初始容量 */ private static

weixin_44695793的博客 239

动手写一个阻塞队列

之前看队列,都是停留在看和使用的阶段。再次看队列的时候,忽然发现并没有深入到底层。比如:阻塞队列时如何阻塞的呢?是监听,还是等待呢?然后看着看着就看到了Lock和ReentrantLock,为什么不使用synchronized呢?为什么使用Condition,Condition是什么呢?wait,notify,notifyAll和await,signal,signalAll有什么区别呢? 能不能...

jinjin603的博客 5996
上一篇: ”让男友打十万个「对不起」道歉,汉字标上多少遍。如何快速检查中间没有漏?“的坚决方案
下一篇: 自己动手实现LinkedList
Xd_Yu
博客等级 码龄12年 5粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值