通过数组模拟ArrayList结构,完成容器的创建、添加、修改、删除,以及可以 遍历自定义的结构,-阿里云开发者社区

开发者社区> 一条coding> 正文

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

   }


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
自定义String类,并且实现在STL容器中添加自定义的类型
13.44 编写标准库string类的简化版本,命名String。你的类应该至少有一个默认构造函数和一个接受C风格字符串指针参数的构造函数。使用allocator为你的String类分配所需内存。 13.47 添加拷贝构造函数和拷贝赋值运算符,并添加打印语句,则每次函数执行时打印一条信息。
589 0
MySQL添加字段和修改字段的方法
添加表字段 alter table table1 add transactor varchar(10) not Null; alter table   table1 add id int unsigned not Null auto_increment primary key 修改某个表的字段...
644 0
UWP开发入门(十)——通过继承来扩展ListView
原文:UWP开发入门(十)——通过继承来扩展ListView   本篇之所以起这样一个名字,是因为重点并非如何自定义控件,不涉及创建CustomControl和UserControl使用的Template和XAML概念。
1151 0
也玩MVC3.0 Razor自定义视图引擎“.NET技术”来修改默认的Views目录结构
刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。 MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。
887 0
Confluence 6 升级自定义的站点和空间仔细测试你的修改
修改可能对 Confluence 的后续版本不兼容,当你对 Confluence 进行升级的时候,你应该总是对你自定义修改的模板文件进行仔细的测试来确定所有的修改对新版本的 Confluence 兼容。
695 0
使用ADO对象添加、修改、删除数据
使用ADO对象对数据库中的数据进行添加、修改和删除等操作。首先创建一个ADO类,通过ADO类连接数据库,并打开记录集。例如,使用ADO对象添加、修改、删除数据,程序设计步骤如下:(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改“使用ADO对象添加、修改、删除数据”。
803 0
SharePoint自动化系列——通过PowerShell创建SharePoint List Items
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PSSnapin microsoft.
711 0
+关注
121
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载