广告
返回顶部
首页 > 资讯 > 精选 >Java 项目中如何实现自定义ArrayList
  • 381
分享到

Java 项目中如何实现自定义ArrayList

java自定义arraylist 2023-05-31 17:05:20 381人浏览 泡泡鱼
摘要

本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 中模仿源码自定义ArrayList最近看了下ArrayList的源码,抽空

本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Java 中模仿源码自定义ArrayList

最近看了下ArrayList的源码,抽空根据ArrayList的底层结构写了一个功能简单无泛型的自定义ArrayLsit,帮助自己更好理解ArrayList:,其实现的底层数据结构为数Object组,代码如下:

 public class MyArrayList {      private Object[] elementData;   private int size;         public int size(){     return size;   }      public boolean isEmpty(){     return size==0;   }   //默认容量为10   public MyArrayList(){     this(10);   }      public MyArrayList(int initialCapacity){     if(initialCapacity<0){       try {         throw new Exception();       } catch (Exception e) {         e.printStackTrace();       }     }     elementData = new Object[initialCapacity];   }      public void add(Object obj){     //数组扩容和数据的拷贝,重新new一个数组     if(size==elementData.length){       Object[] newArray = new Object[size*2+1];       System.arraycopy(elementData, 0, newArray, 0, elementData.length);        elementData = newArray;     }          elementData[size++]=obj; //   size++;   }      public Object get(int index){     rangeCheck(index);          return elementData[index];   }      public void remove(int index){     rangeCheck(index);          int numMoved = size - index - 1;     if (numMoved > 0){       System.arraycopy(elementData, index+1, elementData, index,           numMoved);     }     elementData[--size] = null; // Let GC do its work   }      public void remove(Object obj){     for(int i=0;i<size;i++){       if(get(i).equals(obj)){ //注意:底层调用的equals方法而不是==.         remove(i);       }     }   }      public Object set(int index,Object obj){     rangeCheck(index);      Object oldValue = elementData[index];     elementData[index] = obj;     return oldValue;   }      public void add(int index,Object obj){     rangeCheck(index);          ensureCapacity(); //数组扩容          System.arraycopy(elementData, index, elementData, index + 1,          size - index);     elementData[index] = obj;     size++;   }      private void ensureCapacity(){     //数组扩容和数据的拷贝         if(size==elementData.length){           Object[] newArray = new Object[size*2+1];           System.arraycopy(elementData, 0, newArray, 0, elementData.length); //             for(int i=0;i<elementData.length;i++){ //               newArray[i] = elementData[i]; //             }           elementData = newArray;         }   }         private void rangeCheck(int index){     if(index<0||index>=size){       try {         throw new Exception();       } catch (Exception e) {         e.printStackTrace();       }     }   }         public static void main(String[] args) {     MyArrayList list = new MyArrayList(3);     list.add("333");     list.add("444");     list.add("5");     list.add("344433");     list.add("333");     list.add("333");     for (int i = 0; i < list.size(); i++) {       System.out.println(list.get(i));      }     System.out.println("------------------------------");      list.remove("444");     list.add(2, "a");     for (int i = 0; i < list.size(); i++) {       System.out.println(list.get(i));      }   }  } 

--结束END--

本文标题: Java 项目中如何实现自定义ArrayList

本文链接: https://www.lsjlt.com/news/227245.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 项目中如何实现自定义ArrayList
    本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 中模仿源码自定义ArrayList最近看了下ArrayList的源码,抽空...
    99+
    2023-05-31
    java 自定义 arraylist
  • Java项目中如何自定义抽象类
    今天就跟大家聊聊有关Java项目中如何自定义抽象类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描...
    99+
    2023-05-31
    java 抽象类 ava
  • 如何在java 8项目中自定义collector
    本篇文章给大家分享的是有关如何在java 8项目中自定义collector,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:将 一个容器List<Bean> 按照...
    99+
    2023-05-31
    java8 collector ava
  • 在Spring Boot项目中如何实现自定义PropertySourceLoader
    今天就跟大家聊聊有关在Spring Boot项目中如何实现自定义PropertySourceLoader,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SpringBoot 的配置文件...
    99+
    2023-05-31
    propertysourceloader springboot ce
  • 在spring-boot项目中如何实现自定义filter
    在spring-boot项目中如何实现自定义filter?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。传统的javaEE增加Filter是在web.xml中配置...
    99+
    2023-05-31
    springboot 自定义 filter
  • ArrayList如何在Java项目中使用
    本篇文章为大家展示了ArrayList如何在Java项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ArrayList的类图结构ArrayList继承于 AbstractList,实现了 L...
    99+
    2023-06-14
  • Springboot项目中如何实现异常处理自定义
    这期内容当中小编将会给大家带来有关Springboot项目中如何实现异常处理自定义,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景Springboot 默认把异常的处理集中到一个ModelAndView...
    99+
    2023-05-31
    springboot 异常处理 目中
  • 浅谈JAVA在项目中如何自定义异常
    JAVA项目中自定义异常 1.数据返回处理类 @Data public class R<T> implements Serializable { priv...
    99+
    2022-11-12
  • Java泛型模拟scala实现自定义ArrayList方式
    目录泛型模拟scala实现自定义ArrayList自定义实现ArrayList代码泛型模拟scala实现自定义ArrayList 泛型就是将类型由原来的具体的类型参数化,类似于方法中...
    99+
    2022-11-12
  • 如何在Android项目中自定义title
    这篇文章给大家介绍如何在Android项目中自定义title,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先编写title的布局文件,title.xml:<xml version="1.0&...
    99+
    2023-05-31
    android roi title
  • JAVA在项目中怎么自定义异常
    这篇文章主要讲解了“JAVA在项目中怎么自定义异常”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA在项目中怎么自定义异常”吧!JAVA项目中自定义异常1.数据返回处理类@Datapub...
    99+
    2023-06-20
  • Android项目中如何实现自定义相机预览界面
    Android项目中如何实现自定义相机预览界面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。官方文档:public static void setCameraD...
    99+
    2023-05-31
    android roi 目中
  • 怎么在java项目中对注解自定义
    这期内容当中小编将会给大家带来有关怎么在java项目中对注解自定义,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java  自定义注解的实例详解Java的Annotation是在5.0版本之后引...
    99+
    2023-05-31
    java 中对 ava
  • 怎么在java项目中自定义线程池
    怎么在java项目中自定义线程池?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用线程池时,可以使用 newCachedThreadPool()或者 newFi...
    99+
    2023-05-31
    java 线程池 ava
  • VS2019 自定义项目模板的实现方法
    前言: 使用“宇宙最强IDE”开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下 VS为我们提供了基础的项目模板,但现有项目模板未包含基础功能如:日志输出、审计日...
    99+
    2022-11-12
  • 如何在Android项目中自定义view函数
    如何在Android项目中自定义view函数 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先 往Canvas上面draw需要一个Paint。 Paint p ...
    99+
    2023-05-31
    android view roi
  • Android开发中项目实现一个自定义Tab选项卡功能
    Android开发中项目实现一个自定义Tab选项卡功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:import android.app.TabActivity;...
    99+
    2023-05-31
    android tab roi
  • Java中ArrayList与顺序表的定义与实现方法
    目录1、线性表定义特征2、顺序表定义实现打印数组新增元素判断是否包含某个元素查找元素获取pos位置的元素更改pos位置的值删除操作获取顺序表长度清空顺序表3、ArrayList简介:...
    99+
    2022-11-13
  • Java中线程池自定义如何实现
    这篇“Java中线程池自定义如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中线程池自定义如何实现”文章吧。线...
    99+
    2023-07-05
  • java如何实现自定义zip包
    java如何实现自定义zip包?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.配置pom.xml文件,添加build节点<build> &l...
    99+
    2023-05-31
    java zip ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作