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位置的值为value
 public 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));
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 | SpringBoot+vue校园问卷调查系统(附源码)

1&#xff0c;绪论 研究目的 在进入21世纪以后&#xff0c;互联网得到了蓬勃的发展&#xff0c;电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后&#xff0c;传统问卷还存在很多弊端&#xff1a; 问卷分发起来比较困难&#xff0c;并且分发试卷耗费大量的金…

使用官方构建工具来创建一个vue3的项目

当你使用 Vite 构建项目时&#xff0c;可能会发现在命令行界面无法选择是否包含 TypeScript 等其他基础配置。此外&#xff0c;使用 vue create 命令创建项目时&#xff0c;默认会使用 vue-cli&#xff0c;但项目启动等过程可能较慢。在这种情况下&#xff0c;你可以参考以下步…

Web3去中心化存储:重新定义云服务

随着Web3技术的崭露头角&#xff0c;去中心化存储正在成为数字时代云服务的全新范式。传统的云服务依赖于中心化的数据存储架构&#xff0c;而Web3的去中心化存储则为用户带来了更安全、更隐私、更可靠的数据管理方式&#xff0c;重新定义了云服务的未来。 1.摒弃中心化的弊端 …

报考人工智能证书都学哪些内容?好过吗?

由国家工信部权威认证的人工智能证书是跨入人工智能行业的敲门砖&#xff0c;随着人工智能技术的发展越来越成熟&#xff0c;相关的从业人员也会剧增&#xff0c;证书的考取难度也会变高。如果已经从事或者准备从事人工智能行业的人员&#xff0c;对于考证宜早不宜迟&#xff0…

升降式OLED透明屏,影响价格的因素有这6大方面

以下是一篇关于升降OLED透明屏的文章&#xff0c;包括其规格、实现原理、应用领域、特色优势和价格等方面&#xff1a; 升降OLED透明屏的规格升降OLED透明屏的尺寸可以根据不同的需求进行定制&#xff0c;尺寸范围从32英寸到200英寸不等。同时&#xff0c;它的厚度不到1厘米&am…

如何使用Lychee结合内网穿透搭建私人图床网站并发布至公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

多云架构下的点击流数据分析

在出海的大趋势下&#xff0c;需要对点击流数据进行分析&#xff0c;以便更快的确定客户。作为多家云厂商的合作伙伴&#xff0c;九河云将提供点击流数据分析的改良方案。 对于这个需求可以借助aws的受众细分和定位解决方案&#xff0c;您可以应用基于云的分析和机器学习来减少…

操作系统-操作系统的概念和功能

文章目录 大家熟悉的操作系统总览操作系统的概念&#xff08;定义&#xff09;操作系统的功能和目标-作为系统资源的管理者操作系统的功能和目标-向上层提供方便易用的服务图形化用户接口联机命令接口脱机命令接口程序接口小结 操作系统的功能和目标-作为最解决硬件的层次小结 …

muduo网络库剖析——套接字Socket类

muduo网络库剖析——套接字Socket类 前情从muduo到my_muduo 概要socket网络编程socket编程接口介绍头文件socketbindlistenacceptaccept4connect 框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多…

Java重修第七天—内部类

通过学习本篇文章可以掌握如下知识 成员内部类 静态内部类 局部内部类 匿名内部类(重点掌握) 内部类 是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块)&#xff0c;其定义为&#xff1a;如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 场景…

SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用

四、Database MetaData 与 SQL Express Language 的使用 MetaData对象用于描述表结构&#xff0c;SQL Express Language是DBAPI SQL的统一封装器。MetaData 与SQL Express 语句可以在Core层使用&#xff0c;ORM层基于MetaData, SQL Express基础上做了进一步抽象。本章将介绍在…

如何使用Docker本地搭建Traefik服务并实现公网访问管理界面

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

电动工具直流调速专用集成电路GS069,具有电源电压范围宽、功耗小、抗干扰能力强等特性

GS069电动工具直流调速电路是CMOS专用集成电路&#xff0c;具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络&#xff0c;改变与之相接 的VMOS 管的输出&#xff0c;达到控制电动工具转速的作用。该电路输出幅值宽&#xff0c; 频率变化小&#xff0c;占空比…

pytorch10:正则化(weight_decay、dropout、Batch Normalization)

目录 一、正则化regularization1.概念2.过拟合3.减小方差策略4 正则化--权值衰减 二、正则化-dropout2.1 dropout概念2.2 数据尺度变化2.3 nn.Dropout2.4 两种模式 三、Batch Normalization3.1 ICS现象&#xff08;Internal Covariate Shift&#xff0c;内部协变量偏移)3.2 BN原…

本地搭建Oracle数据库结合内网穿透实现公网环境远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2…

解决:ModuleNotFoundError: No module named ‘pymysql’

解决&#xff1a;ModuleNotFoundError: No module named ‘pymysql’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named pymysql背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&#xff0c;…

国图公考:2024山东省事业单位发布招聘公告

更多信息可以登录山东人事考试信息查看&#xff01;

134基于matlab的时间序列预测

基于matlab的时间序列预测&#xff0c;包括最小二乘支持向量机和粒子群优化支持向量机及改进的粒子群优化支持向量机。输出测试结果&#xff0c;具有GUI可视化界面。程序已调通&#xff0c;可直接运行。 134matlab时间序列预测粒子群优化 (xiaohongshu.com)

Transformer原理与代码实现

Transformer原理与代码实现 概览 一、嵌入层 Embedding 二、位置编码 Positional Encoding 三、&#xff08;整合&#xff09;Transformer嵌入层 Transformer Embedding 四、带缩放的点积注意力机制 Scaled Dot-Product Attention 五、多头注意力 Multi-Head Attention 六…

基于ssm的社区流浪动物救助领养系统的设计与开发+vue论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;流浪动物信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足…