Java重写ArrayList方法

前言:ArrayList中有很多方法,我们只有深知这些方法是怎么实现的才能更好的使用,不用死记硬背

我们来一一实现(重写)

前提准备:我们需要先创建一个类,类中写ArrayList的内部结构组成

public class MyList implements IList {private int[] array;private int size;public static final int Defaulte_size = 2;public MyList() {this.array = new int[Defaulte_size];}
}

add(int data)

 public void add(int data) {if (isFull()) array = Arrays.copyOf(array, 2 * array.length);//数组容量不够扩容array[size] = data;size++;}

add(int pos, int data)

 public void add(int pos, int data) {//指定位置添加元素if(pos<0 || pos >size) {System.out.println("pos不合法");return ;}if (isFull())array = Arrays.copyOf(array, 2 * array.length);for (int i = size-1; i >pos ; i--) {array[i+1]=array[i];}array[pos]=data;size++;

contains(int toFind)

 //查找当前元素 是否存在public boolean contains(int toFind) {if (array == null) return false;for (int i = 0; i < array.length; i++) {if (array[i] == toFind) return true;}return false;}

indexOf(int toFind)

 //查找当前元素 的下标public int indexOf(int toFind) {if (array == null) return -1;else {for (int i = 0; i < array.length; i++)if (array[i] == toFind) return i;}return -1;}

get(int pos) 

 //返回下标元素public int get(int pos) {if (isEmpty() || pos < 0 || pos >=size) {System.out.println("pos不合法");return -1;}else return array[pos];}

set(int pos, int value)

 //更新pos位置的值为valuepublic void set(int pos, int value) {if (isEmpty()|| pos < 0 || pos >= size) {System.out.println("pos不合法");return;}array[pos] = value;}

 remove(int toRemove)

//删除toRemove这个数字public void remove(int toRemove) {int dex=indexOf(toRemove);if (isEmpty() || dex < 0 || dex >= size) { System.out.println("没有"+toRemove);return;}else {for (int i = dex + 1; i < size; i++) {array[i - 1] = array[i];}//如果删除最后一个元素,最后size--后可以被删除size--;}}

size()

 public int size() {
//求表中元素个数return size;}

clear()

//清空顺序表public void clear() {size=0;}

display() 

//打印顺序表元素public void display() {for (int i = 0; i <size ; i++) {System.out.print(array[i]+" ");}System.out.println();}

isFull()

//判断是否满了 满了要扩容public boolean isFull() {if (size==array.length)return  true;return false;}

 isEmpty()

//判断表是否为空
public boolean isEmpty() {return size==0;}
}

测试代码

public class Testmain {public static void main(String[] args) {MyList test =new MyList();test.add(1);test.add(2);test.add(3);test.remove(4);test.add(3,5);test.display();System.out.println(test.isFull());System.out.println(test.get(0));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1,1,1,2…

代码随想录算法训练营第五天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

系列文章目录 代码随想录算法训练营第一天|数组理论基础&#xff0c;704. 二分查找&#xff0c;27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

【Elsevier】中科院分区升至1区TOP,录用率50%, 代表作神刊!

发表说 截图来源&#xff1a;LetPub 01 期刊概况 Computers & Industrial Engineering 【出版社】Elsevier 【ISSN】0360-8352 【检索情况】SCI&EI双检 【WOS收录年份】1976年 【出刊频率】月刊&#xff0c;最新一期Volume 188 &#xff0c;In progress (February…

arcgis javascript api4.x以basetilelayer方式加载arcgis发布的栅格切片服务

需求&#xff1a; 以arcgis js api的basetilelayer加载arcgis发布的栅格切片服务 效果图&#xff1a; 其中和tileinfo和lods&#xff0c;这样获取&#xff1a; https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/?fpjson urltemplate&#xff1a; …

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具&#xff0c;简化了记忆Git命令行的过程&#xff0c;将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

电商平台api接口对接须知

随着互联网的发展和普及&#xff0c;电商平台已成为人们日常生活中不可或缺的一部分。而为了保证电商平台的正常运行&#xff0c;平台与开发者之间需要进行数据交互&#xff0c;这便涉及到了电商平台API接口对接的问题。本文将详细介绍电商平台API接口对接的须知事项。 一、了…

springboot摄影跟拍预定管理系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

Javascript 地狱级的if else / switch case该如何优化?

目录 问题 一、7大策略优化 1.单个if语句优化 2.if/else语句优化 3.多条件判断 4.多个 if else 嵌套优化策略 问题场景 如何优化 1.使用卫语句 2. try catch优化 3. 可选链 optional chaining 5.Map优化 场景实战 6.策略模式优化 7.复杂二维数组策略模式 …

简单易用的快速原型软件终于被我找到了!

在产品开发过程中&#xff0c;原型设计是一个非常重要的环节&#xff0c;它不仅有助于团队之间的合作和沟通&#xff0c;而且是产品是否符合用户体验的关键。在本文中&#xff0c;我们将推荐一些有用的原型设计工具 即时设计 即时设计是一种在线原型设计工具。你可以用它在线…

RPA与通知机器人的完美结合

写在前面 在现代快节奏的工作环境中&#xff0c;我们经常会面临多个任务同时进行的情况&#xff0c;你还在为时间不够用、忙碌而惆怅吗&#xff1f;你还在为时刻盯着电脑流程而烦恼吗&#xff1f;你还在为及时收不到自己的自动化任务进度而焦躁吗&#xff1f;别担心&#xff0…

目标检测数据集 - 行人检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;行人检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如校园行人、街景行人、道路行人、遮挡行人、严重遮挡行人数据&#xff1b;适用实际项目应用&#xff1a;公共场所监控场景下行人检测项目&#xff0c;以及作为…

中国关心下一代工作委员会健康体育发展中心美育舞蹈考官一王雪

王雪—— 《中国关心下一代工作委员会》健康体育发展中心、美育舞蹈考官、评委 北京舞蹈学院舞蹈编导 朝阳区小红门地区文化艺术-领头人 中国舞舞蹈家协会会员 2019年7月7日中国观网第六届京津冀淑女 2021年辅导学生登上央视春晚 《听我说》 2023年4月22日带学生参加万人…

Vue 3,element table表格动态添加

el-table实现表格动态新增/插入/删除表格行&#xff0c;可编辑单元格 效果图 代码实现 <template><el-table :data"formDate.scoreList4" style"width:100%;height: 96%;" stripe show-summary:summary-method"calculateSummary":he…

【2023年收入最高的10种编程语言】

在过去的一年时间里&#xff08;2022 年 10 月 1 日到 2023 年 10 月 1 日&#xff09; &#xff0c;DevJobsScanner 分析了来自世界各地的超过 1000 万份开发工作机会&#xff0c;以了解市场以及最热门、薪酬最高的编程语言。值得注意的是&#xff0c;本项研究只关注了来自美国…

通过myBatis将sql语句返回的值自动包装成一个java对象(1)以及SqlSessionFactory

如果我们从数据库中读取了一个用户的两个属性——用户名和密码。此时我们希望把这两个属性放入一个java的用户对象中。我们可以选择new一个user对象&#xff0c;向构造器传入我们刚刚读取的两个属性。但一旦从数据库中读取的内容变多&#xff0c;我们就需要new很多新的对象。这…

2024年第10届计算与人工智能国际会议(ICCAI 2024)即将召开

时间&#xff1a;2024年4月26-29日 地点&#xff1a;印度尼西亚巴厘岛 会议官网&#xff1a;ICCAI 2024|Bali, Indonesiahttps://www.iccai.net/index.html 2024年第十届计算与人工智能国际会议&#xff08;ICCAI 2024&#xff09;将于2024年4月26-29日在印度尼西亚巴厘岛举行…

推荐一款实用的免费开源局域网传输工具!轻松搭建网盘的神器!

本文小编给大家分享一款免费开源软件 Filebrowser&#xff0c;使用它可以轻松搭建属于你的个人网盘和网页版文件管理器。 它能做什么呢&#xff1f;想必大家也都用过百度网盘或阿里云盘之类的云存储服务&#xff0c;将自己的所有数据都存储在别人的服务器上&#xff0c;所谓的在…

【开源】基于JAVA的用户画像活动推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

原型设计工具Axure RP结合内网穿透实现本地web页面公网访问协同办公

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

coala,一个超级实用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超级实用的 Python 库 - coala。 Github地址&#xff1a;https://github.com/coala/coala/ 在现代软件开发中&#xff0c;代码质量和一致性是非常重要的。然而&#xff0c…