码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Java第十七期】:##模拟实现一个ArrayList


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

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

    文章目录

    • 前言
    • 一,什么是ArrayList?
    • 二,MyArrayList的实现
      • 1,打印顺序表
      • 2,在数组最后新增元素
      • 3,如何在pos位置新增元素
      • 4,判断是否包含某个元素
      • 5,查找某个元素的对应位置
      • 6,获取pos位置的元素
      • 7,把pos下标的元素更改为value
      • 8,删除第一次出现的关键字toRemove
      • 9,获取顺序表的长度和清空顺序表
      • 10,全部代码

    前言

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

    一,什么是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)
    请添加图片描述

  • 相关阅读:
    5G基站配置
    NLog笔记
    笔试强训Day2
    简单版的采用前后端分离模式实现SpingBoot新增&查询功能
    记忆函数的实战应用
    电商平台如何提高网站安全性
    C#在.NET Windows窗体应用中使用LINQtoSQL
    Gartner发布『2022年技术成熟度曲线』;『强化学习导论』电子书;读博申请超全攻略;快速构建推荐系统工具包;前沿论文 | ShowMeAI资讯日报
    编辑距离解析
    深度解析:用Python爬虫逆向破解dappradar的URL加密参数(最详细逆向实战教程,小白进阶高手之路)
  • 原文地址:https://blog.csdn.net/m0_62262008/article/details/125550433
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号