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

简介: 通过数组模拟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;

   }


相关文章
|
存储 算法 C语言
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
612 0
|
10月前
|
存储 C++ 容器
高维结构投影系列(一):波函数与弦:万象的压缩容器
波函数与弦理论看似分属不同领域,实则揭示同一宇宙奥秘:用极简结构承载无限可能。波函数展现态空间的概率压缩,弦振动呈现粒子谱的展开选择。二者皆为高维结构的投影机制——一个映射态空间,一个映射谱空间。现实并非粒子碰撞,而是结构压缩与展开的选定分支。宇宙或是一套“压缩—展开”系统,现实只是可能性之海中被观测选中的片段。
439 0
|
监控 Serverless 文件存储
函数计算产品使用问题之如何确保新建的实例拉取的是最新的自定义容器镜像
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
215 0
|
XML 移动开发 JSON
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
本文介绍了Twaver HTML5中的数据容器(DataBox),包括如何进行增删查改操作、遍历数据容器以及判断网元是否存在于数据容器中。DataBox用于管理所有的网元对象,如ElementBox、LayerBox、AlarmBox等,并通过示例代码展示了其常用方法的使用。
224 1
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
|
存储 安全 Java
ArrayList的基本操作【集合容器知识回顾 ②】
这篇文章详细介绍了ArrayList的基本操作,包括创建对象、添加和删除元素、获取和更新元素、遍历、判断元素存在性、集合的空值检查、批量操作、转换为数组、截取子集合、查找元素索引、克隆拷贝、清空集合以及容量管理等,同时指出了使用ArrayList时的注意事项,如线程安全性、容量管理、删除元素的性能、遍历时的修改、空值处理和性能优化。
ArrayList的基本操作【集合容器知识回顾 ②】
|
C++ 容器
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
210 5
|
存储 C++ 容器
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
223 5
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
312 8
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
864 6
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
219 0