自定义ArrayList集合

xiaoxiao2021-02-28  132

package com.heima.structure; import java.util.Arrays; /**    * 自己实现ArrayList集合      * @author Zw    * */ public class MyArrayList { /** * ArrayList 其实底层是数组  *  定义一个数组 对数组进行增删改查操作 * @author Zw * */ //无参函数进行初始化 public MyArrayList(){ init(10); //默认给10个初始化容量 } /** * 有参函数进行初始化 * */ public MyArrayList(int  capacity){ init(capacity); } public Object [] arr;//定义一个数组 //第二步统计集合中的元素  private int size=0; /** * 进行初始化方法 * */ private void init(int capacity){ //进行合法判断 if(capacity<0){ throw new RuntimeException("进行初始化错误"); } arr=new Object[capacity]; //初始化完成 } /*** * @param 自己集合添加元素功能 你给我一个Object 类型进行添加 * */ public void  add(Object element){ //如果数组越界 进行扩充 if(size>=arr.length){ int newCapacity=arr.length*2; Object []newarr= Arrays.copyOf(arr, newCapacity); arr=newarr; } //进行赋值操作 arr[this.size]=element; this.size++;//下标进行加加 }   /**   * @param  查询指定元素所在的下标(比如,44元素的位置就是3.).   * @return 找到了就返回下标 否则-1   * */ public int getElementIndex(Object element){ for (int i = 0; i < arr.length; i++) { if(arr[i]==element){ return i;//找到了 } } return -1; //没有找到 //*4):查询指定索引是哪一个元素(比如,位置为2的球员是33.). /** * @author Zw * @param 根据你给我的索引去查找是否有这个元素 * @return 如果找到了就返回 * **/ public Object getIndexElement(int index){ //我要检查是否合法 if(index<0||index>arr.length){ throw new RuntimeException("数组索引越界了♪(^∇^*)"); } return arr[index];//取出这个值 } //5):从集合元素中,移除指定的元素 根据下标进行删除. /** * @author ZW * @param 根据你给我的下标进行删除操作 * */ public void remove(int index){ //进行合法判断 if(index<0||index>arr.length){ } else{ for (int i = index; i < this.size-1; i++) { arr[i]=arr[i+1]; //把后面元素位置往前面加1 } this.size--; //进行减一操作 因为我删除一个所以进行减 } } //根据元素进行删除了 /** * @author Zw * @param 根据你给我的元素去删除 * */ public void remove(Object element){ int index=getElementIndex(element);//找到它的下标 remove(index);//进行删除 } /** * @param 根据指定下标位置的元素换成另一个元素..  * */ public void set(int index,Object element){ //判断这个下标是否存在  if(index<0||index>arr.length){ throw new RuntimeException("索引越界了亲 ╭(╯3╰)╮"); } arr[index]=element;//改变这个下标的元素值 /** * @param判断此集合是否为空 * @return 返回真假值 * */     public boolean isEmpty(){     return this.size==0?true:false;     }          /**      * @author Zw      * @param 8.0 返回此集合中的所有个数      * */ public  int Size(){ return this.size; } /** * @author Zw * @param 清除所有集合中的元素 * */ public void clear(){ for (int i = 0; i < arr.length; i++) { arr[i]=null; //全部赋值给null } this.size=0; //改变集合中的个数 }     /***      * @param// 9):打印所有的元素(比如:[11,22,33,44,55])       *遍历功能      * @author Zw      * */ public String print(){ StringBuilder sb=new StringBuilder(size*2); sb.append("["); for (int i = 0; i <=size-1; i++) { sb.append(arr[i]); if(i!=this.size-1){ sb.append(","); } } sb.append("]"); return sb.toString(); } /** * 重写父类的Object的toString方法 * **/ @Override public String toString(){ return this.print(); } }
转载请注明原文地址: https://www.6miu.com/read-44224.html

最新回复(0)