Java重写ArrayList方法

这篇具有很好参考价值的文章主要介绍了Java重写ArrayList方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Java重写ArrayList方法,数据结构,Java,java,开发语言

我们来一一实现(重写)

前提准备:我们需要先创建一个类,类中写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));
    }
}

Java重写ArrayList方法,数据结构,Java,java,开发语言文章来源地址https://www.toymoban.com/news/detail-802835.html

到了这里,关于Java重写ArrayList方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索Java集合框架—数据结构、ArrayList集合

    Java集合的使用相信大家都已经非常得心应手,但是我们怎么做到知其然,更知其所以然这种出神入化的境界呢?我们揭开集合框架底层神秘面纱来一探究竟 目录 一、背景介绍 二、思路方案 数据结构是什么? 数据结构可以分为线性和非线性两种数据结构 线性数据结构: 非

    2024年02月10日
    浏览(31)
  • 数据结构(Java实现)-ArrayList与顺序表

    什么是List List是一个接口,继承自Collection。 List的使用 List是个接口,并不能直接用来实例化。 如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 常见的线性表

    2024年02月11日
    浏览(29)
  • [java数据结构] ArrayList和LinkedList介绍与使用

    (一) 线性表 (二) ArrayList 1. ArrayList的介绍 2. ArrayList的常见方法和使用 3. ArrayList的遍历 4. ArrayList的模拟实现 5. ArrayList的优缺点 (三) LinkedList 1. LinkedList的介绍 2. LinkedList的常见方法和使用 3. LinkedList的遍历 4. LinkedList的模拟实现 5. LinkedList的优缺点 (四) ArrayList和LinkedList的区别

    2024年01月21日
    浏览(37)
  • java八股文面试[数据结构]——ArrayList和LinkedList区别

      ArrayList和LinkedList的异同 二者的线程都不安全,相对线程安全的Vector,执行效率高。此外,ArrayList时实现了基于动态数组的数据结构,LinkedList基于链表的数据结构,对于随机访问get和set,ArrayList觉得优于LinkedList比较占优势,因为LinledList要移动指针。对于新增和删除操作add

    2024年02月11日
    浏览(38)
  • java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

    对于数据结构我这边只告诉你右边框框里的 栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈 栈就像一个弹夹 队列先进先出后进后出 队列像排队 链表查询满 但是增删快(相对于数组而言) 拓展:还有一个双向链表 他在查询元素的时候更快些,因为他在拿到一个元素

    2024年02月05日
    浏览(38)
  • 【Java集合类面试二十六】、介绍一下ArrayList的数据结构?

    文章底部有个人公众号: 热爱技术的小郑 。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:介绍一下ArrayList的数据结构? 参考答案: ArrayList的底

    2024年02月08日
    浏览(34)
  • 【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)

    🍃 数据结构是 计算机 存储 、 组织 数据的方式 🎉 线性 结构 线性表(数组、链表、栈、队列、哈希表) 🎉 树形 结构 二叉树 AVL 树 红黑树 B 树 堆 Trie 哈夫曼树 并查集 🎉 图形 结构 邻接矩阵 邻接表 🎁 线性表是具有 n 个 相同类型元素 的有限 序列 (n = 0) a1 是首节点

    2024年02月10日
    浏览(63)
  • 【无标题】一篇文章带你彻底理解Java ArrayList数据结构详解

    基本概念: ​ **之前创建数组的时候,需要声明提前声明数组的大小,**ArrayList是一个可以动态修改的数组,与普通数组的区别就是没有固定大小的限制,它会动态调整长度。 ​ **ArrayList继承了AbstractList,并实现了List接口。**如下图: **ArrayList 类位于 java.util 包中,**使用前

    2024年02月14日
    浏览(43)
  • 【JavaSE专栏48】Java集合类ArrayList解析,这个动态数组数据结构你了解吗?

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向 :Vue、SpringBoot、微信小程序 本文讲解了 Java 中集合类 ArrayList 的语法、使用说明和应用场景,并给出了样例代码。

    2024年02月16日
    浏览(50)
  • 【Java数据结构 -- 实现双链表的接口方法】

    双链表是一种数据结构,其中每个节点包含 一个指向前一个节点的指针和一个指向后一个节点的指针 。由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来,因此双链表可以任意且快速的插入和删除元素。 引用接口IList,在把

    2024年01月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包