通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以 遍历自定义的结构,

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以 遍历自定义的结构,

public class ArrayList {

   /*通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以

遍历自定义的结构,提示可以ArrayList源码。

*/

   int n=2;

   int size=-1;

   Object []array;

   public ArrayList(){

       array=new Object[n];

   }

   public static void main(String[] args) {

       ArrayList arrayList=new ArrayList();

       arrayList.add("f");

       arrayList.add("a");

       arrayList.add("w");

       for (int i = 0; i <arrayList.size+1 ; i++) {

           System.out.println(arrayList.getarray(i));

       }

       System.out.println("------------");

       arrayList.add(2, "2");

//        越界,报错

       arrayList.add(5, "5");


       for (int i = 0; i <arrayList.size ; i++) {

           System.out.println(arrayList.getarray(i));

       }

       System.out.println("--------------");

       arrayList.remove(2);

       arrayList.remove("f");

       for (int i = 0; i <arrayList.size ; i++) {

           System.out.println(arrayList.getarray(i));

       }

       arrayList.set(1, "10");

       System.out.println("--------------");

       for (int i = 0; i <arrayList.size ; i++) {

           System.out.println(arrayList.getarray(i));

       }

   }

   public void enlarge(){

       n=n*2+1;

       Object [] newarray=new Object[n];

       System.arraycopy(array, 0, newarray, 0, array.length);

       array=newarray;


   }

   public Object getarray(int i){

       return array[i];

   }

   public int add(int index,Object obj){

       if(index>n-1){

           enlarge();

       }

       if(index>size&&index<n){

           System.out.println("java.lang.IndexOutOfBoundsException");

       }

       for (int i=index; i <=size; i++) {

           array[index+1]=array[index];

       }

       array[index]=obj;

       size++;

       return size;

   }

   public int add(Object obj){

       if(size>=n-1){

           enlarge();

       }

       array[size+1]=obj;

       size++;

       return size;

   }

   public void remove(int index){

       for (int i = index; i<size; i++) {

           array[i]=array[i+1];

       }

       array[size]=null;

       size--;

   }

   public void remove(Object obj){

       for (int i = 0; i <=size ; i++) {

           if(obj.equals(getarray(i))==true){

               remove(i);

           }

       }

   }

   public void set(int index,Object obj){

       array[index]=obj;

   }


相关文章
|
2月前
|
存储 算法 C语言
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
61 0
|
4月前
|
C++ 容器
【C++之迭代器】遍历容器
【C++之迭代器】遍历容器
|
8月前
|
存储 数据处理 C++
数组与容器的对比
数组与容器的对比
101 0
|
2天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
2天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
24天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
算法 程序员 C语言
【C++ 迭代器】深入探讨 C++ 迭代器:标准与自定义容器中的 begin() 和 cbegin()
【C++ 迭代器】深入探讨 C++ 迭代器:标准与自定义容器中的 begin() 和 cbegin()
52 0
|
2月前
|
存储 缓存 安全
【C/C++ 基础 数组容器比较】深入探究C++容器:数组、vector与array之间的异同
【C/C++ 基础 数组容器比较】深入探究C++容器:数组、vector与array之间的异同
18 0
|
2月前
|
存储 C++ 容器
set容器一自定义数据类型指定排序规则讲解
set容器一自定义数据类型指定排序规则讲解
21 1
|
8月前
|
网络协议 应用服务中间件 nginx
容器的自定义网络
本实验介绍了如何在容器中创建和使用自定义网络
236 0