• 【Java第十七期】:##模拟实现一个ArrayList


    宝子们!早上好呀
    今天小猪带你们探索顺序表o(〃^▽^〃)o
    那如何才能模拟一个ArrayList呢?

    在这里插入图片描述
    不多说了,这篇博客是分享一下如何模拟一个ArrayList
    在这里插入图片描述

    前言

    如果有哪里写错了,请大佬们帮忙指出哈!

    一,什么是ArrayList?

    ArrayList就是一个类,一个实现了List接口的类而已。
    那这个神奇的类都实现了哪些接口呢?(下面小猪为大家总结了一些)
    1, ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问
    2, ArrayList实现了Cloneable接口,表明ArrayList是可以clone的
    3,ArrayList实现了Serializable接口,表明ArrayList是支持序列化的
    4, 和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者
    CopyOnWriteArrayList
    5, ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表

    二,MyArrayList的实现

    相信大家学过数据结构之后ArrayList都会使用,那今天小猪就用自己所学过的Java模拟实现一个ArrayList。

    1,打印顺序表

    如果我们有一个顺序表,如何打印?
    图:
    在这里插入图片描述

    代码:
    在这里插入图片描述
    这里要用usedSize,此时的usedSize为0。

    2,在数组最后新增元素

    这里需要注意一下:我们并不知道这个顺序表是否满,所以在增加新元素之前,我们需要判断一下顺序表是否满了没,如果满的话就要进行扩容,如果没有满就可以直接新增。
    代码:
    在这里插入图片描述

    3,如何在pos位置新增元素

    注意:(1)要判断pos位置的合法性和数组是否为满
    (2)pos不能跳着插入,如果pos前面没有元素,则不能插入
    (3)如果想要插入的位置有元素,则需要将该位置上的元素往后移动一位(当然,后面的元素也会跟着往后移动一位),再插入。
    图:
    这里假设插入到下标为4的位置
    在这里插入图片描述
    代码:
    在这里插入图片描述

    4,判断是否包含某个元素

    在这里插入图片描述
    直接遍历数组是否存在该元素即可。

    5,查找某个元素的对应位置

    和上一个差不多
    在这里插入图片描述

    6,获取pos位置的元素

    在这里插入图片描述
    注意:需要判断pos位置的合法性和顺序表是否为空,如果为空则没有必要获取了。(一般可以不用判断顺序表是否为空,因为一般都不为空,以防万一也可以判断)

    7,把pos下标的元素更改为value

    在这里插入图片描述

    8,删除第一次出现的关键字toRemove

    注意:(1)顺序表不能为空
    (2)顺序表当中有需要删除的数据
    (3)找到需要删除的数据的下标
    (4)把后面的值覆盖掉前面的值
    (5)如果是引用类型,则需要把elem[i]置为null,否则数据崩溃
    代码:
    在这里插入图片描述

    9,获取顺序表的长度和清空顺序表

    长度:
    在这里插入图片描述
    清空:
    在这里插入图片描述
    注意:如果这里是int类型的可以直接清空顺序表,如果是引用类型,这需要一一置为null才能清空

    10,全部代码

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    以上就是模拟实现的ArrayList,希望对你们有帮助!!谢谢观看ヽ( ̄ω ̄( ̄ω ̄〃)ゝ
    在这里插入图片描述
    那本期的博客就到此结束了哈ヾ(≧ ▽ ≦)ゝ
    路过的宝子们要关注小博主哦!不然就找不到了╰( ̄ω ̄o)
    请添加图片描述

  • 相关阅读:
    Web应用防火墙的重要性及基本原理
    计算机的组成
    采集数据工具推荐,以及采集数据列表详细图解流程
    A40I工控主板(SBC-X40I)网络接口测试
    SpringBoot+Vue+Element-UI实现鞋类秒杀商城
    git rebase 使用详解
    【一起学Rust | 框架篇 | ws-rs框架】属于Rust的Websocket框架——ws-rs
    【LeetCode】210. 课程表 II——拓扑排序
    Verilog语句
    Jetpack Compose(6)——动画
  • 原文地址:https://blog.csdn.net/m0_62262008/article/details/125550433