Java 我自己的arraylist

Java 我自己的arraylist,java,methods,insert,arraylist,Java,Methods,Insert,Arraylist,我需要做我自己的arraylist类。我正在尝试编写insert方法,如果此索引中已有对象,则在将对象添加到索引0时会遇到问题。它适用于其他索引,但不适用于0。如果有任何帮助,我们将不胜感激 public void insert(int index, Object object) throws IndexOutOfBoundsException { if(index < 0) { System.out.println("Niepoprawny index!");

我需要做我自己的arraylist类。我正在尝试编写insert方法,如果此索引中已有对象,则在将对象添加到索引0时会遇到问题。它适用于其他索引,但不适用于0。如果有任何帮助,我们将不胜感激

public void insert(int index, Object object) throws IndexOutOfBoundsException {

    if(index < 0) {
        System.out.println("Niepoprawny index!");
        throw new IndexOutOfBoundsException();
    }

    if(index > array.length - 1 || array[index] != null) {
        // zwiększenie rozmiaru tablicy
        // jeśli jest zbyta mała lub na danym miejscu istnieje jakiś obiekt
        Object[] temp = new Object[array.length + index];
        System.arraycopy(array, 0, temp, 0, array.length);
        array = temp;
    }

    // przesunięcie o 1 w prawo wszystkich elementów
    System.arraycopy(array, index - 1, array, index, array.length - index);
    array[index] = object;
    size++;
}
public void insert(int-index,Object-Object)引发IndexOutOfBoundsException{
如果(指数<0){
System.out.println(“Niepoprawny索引!”);
抛出新的IndexOutOfBoundsException();
}
if(index>array.length-1 | | array[index]!=null){
//zwiększenie rozmiaru
//杰利开玩笑说,兹比塔·马蒂亚·达尼姆·米耶斯库·伊斯特涅耶·杰基·奥比克是一家俱乐部
Object[]temp=新对象[array.length+索引];
数组复制(数组,0,临时,0,数组长度);
数组=温度;
}
//普雷泽苏尼(przesunięcie o 1 w prawo wszystkich elementów)
System.arraycopy(数组,index-1,数组,index,array.length-index);
数组[索引]=对象;
大小++;
}
  • temp
    的大小错误。由于要添加单个元素,因此它应该是
    array.length+1

  • 第二个
    arraycopy
    中的索引错误

  • 我不太明白
    数组[索引]!=空
    检查

  • 最后,
    if
    的整个主体可以替换为对的单个调用

  • temp
    的大小错误。由于要添加单个元素,因此它应该是
    array.length+1

  • 第二个
    arraycopy
    中的索引错误

  • 我不太明白
    数组[索引]!=空
    检查


  • 最后,如果可以用对的单个调用替换整个

    使用此行,您可以尝试在索引-1处插入数据:

    System.arraycopy(array, index - 1, array, index, array.length - index);
    

    使用此行,您可以尝试在索引-1处插入数据:

    System.arraycopy(array, index - 1, array, index, array.length - index);
    
    导入java.util.array;
    公共类MyArrayList{
    private int listSize=0;//数组化
    private int initialArraySize=1;//初始大小
    @抑制警告(“未选中”)
    私有E[]数据=(E[])新对象[initialArraySize];//初始化数组
    /**
    *在每个添加的元素上自动增加数组
    *@返回
    */
    私有void IncreaseArraySize(){
    //添加元素时,将数组的大小增加一个元素
    data=Arrays.copyOf(data,data.length+1);
    }
    /**
    *向myArrayList添加元素
    */
    公共无效添加(E开头){
    //添加到数组,然后将数组大小更改一个元素
    int i=数据长度;
    if(listSize==data.length){
    增加数组化();
    }
    数据[listSize]=Tobeaded;
    listSize++;
    }   
    /**
    * 
    *@param从MyarrayList中删除项目
    * 
    */
    公共作废删除(E ItemToRemove){
    //删除要删除的元素,然后在删除后将阵列缩小到新大小
    对于(int i=0;i数据长度){
    抛出新的IndexOutOfBoundsException();
    }
    返回null;
    }
    /**
    *获取数组的大小
    */
    公共整数大小(){
    返回列表大小;
    }
    }
    
    导入java.util.array;
    公共类MyArrayList{
    private int listSize=0;//数组化
    private int initialArraySize=1;//初始大小
    @抑制警告(“未选中”)
    私有E[]数据=(E[])新对象[initialArraySize];//初始化数组
    /**
    *在每个添加的元素上自动增加数组
    *@返回
    */
    私有void IncreaseArraySize(){
    //添加元素时,将数组的大小增加一个元素
    data=Arrays.copyOf(data,data.length+1);
    }
    /**
    *向myArrayList添加元素
    */
    公共无效添加(E开头){
    //添加到数组,然后将数组大小更改一个元素
    int i=数据长度;
    if(listSize==data.length){
    增加数组化();
    }
    数据[listSize]=Tobeaded;
    listSize++;
    }   
    /**
    * 
    *@param从MyarrayList中删除项目
    * 
    */
    公共作废删除(E ItemToRemove){
    //删除要删除的元素,然后在删除后将阵列缩小到新大小
    对于(int i=0;i