Java 重新创建Arraylist类

Java 重新创建Arraylist类,java,arraylist,Java,Arraylist,我正在重新创建ArrayList类。我对add方法有问题。我希望我的add方法返回新表并将其影响到我的元素。但是当我想进入我的table元素的元素时,它总是null。 还有一个问题..我想创建一个构造函数,将对象作为Arraylist的元素,比如ArrayListBis(1,2,3)。承包商的参数是ArrayListBis(Object…args) public class ArrayListBis { final static int DEFAULTSIZE=50; private int

我正在重新创建ArrayList类。我对
add
方法有问题。我希望我的
add
方法返回新表并将其影响到我的元素。但是当我想进入我的table元素的元素时,它总是
null
。 还有一个问题..我想创建一个构造函数,将对象作为Arraylist的元素,比如
ArrayListBis(1,2,3)
。承包商的参数是
ArrayListBis(Object…args)

public class ArrayListBis  {

final static int DEFAULTSIZE=50;
private int indexCourant,dernierElement,size;
private Object [] elements;

public ArrayListBis(int size){
    elements=creatList(size);
    indexCourant=0;
    dernierElement=size-1;
    this.size=size;
}

public void add(Object o){
    add(o,size());
}

public void add(Object o, int index){
    Object[] temp;
    if(index <0 || index > size())
        throw new IndexOutOfBoundsException();
    else{
            temp=creatList(size()+1);
            for(int i=0;i!=size()+1;i++){
                if(i<index)
                    temp[i]=elements[i];
                else if(i==index)
                    temp[i]=elements[index];
                else
                    temp[i]=elements[i+1];
            }
        this.size++;
            elements=temp;
    }
}
公共类ArrayListBis{
最终静态int DEFAULTSIZE=50;
私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性、私密性;
私有对象[]元素;
公共ArrayListBis(整数大小){
元素=创建列表(大小);
indexCourant=0;
Dernierelation=尺寸-1;
这个。大小=大小;
}
公共无效添加(对象o){
添加(o,size());
}
公共空添加(对象o,整数索引){
对象[]温度;
if(索引大小())
抛出新的IndexOutOfBoundsException();
否则{
临时=创建列表(大小()+1);
对于(int i=0;i!=size()+1;i++){

如果(i您的add方法存在一些问题。首先,您不需要在每次添加新元素时重新创建列表。原因是您的列表开始时不会满,因此这一行

add(o,size());
只能在
this.size==elements.length
的条件下执行。但是,我认为应该使用
size
或一些变量来反映到目前为止插入到arraylist中的元素的实际数量。因此,在构造函数中,我将设置
this.size=0
,因为它从零开始元素。现在,在原始的
add
方法中,只有在向已满的数组中添加元素时,才创建新数组。正如其他人所说,您并不是从添加新元素开始。因此,通过这些更改,现在应该是这样的

public void add(Object o, int index){
    Object[] temp;
    if(index >= 0 && index < elements.length)
        temp[index] = o;
        size++;
    else{
        temp=creatList(elements.length * 2);
        for(int i=0;i < elements.length;i++){
            if(i<index)
                temp[i]=elements[i];
            else if(i==index)
                temp[i]=o;
            else
                temp[i]=elements[i+1];
        }
        temp[index] = 0;
        size++;
        this.elements = temp;
    }
}
publicsvoidadd(对象o,int索引){
对象[]温度;
如果(索引>=0&&indexif(i)你的
size
方法在哪里?我没有通过所有代码:这是我的methode size():public int size(){return size;}@AbdoRabah在问题中发布所有相关代码。您从未将
o
赋值给数组的元素,是吗?请阅读您的方法。需要将对象o添加到列表中,但您从未在方法中的任何位置使用该参数。感谢您的帮助!您要求我添加的
size
变量是一个好主意。关于这一行
add(o,size())
方法中的
add(o)
用于将对象添加到array@AbdoRabah没问题。如果你找到了答案,别忘了接受或投票。祝你好运!你能告诉我为什么这行
temp[index]=0;
@AbdoRabah很抱歉,这有点晚了,但我这样做的原因是因为我上面的方法只用于添加到列表的末尾。如果要添加到列表的中间,则该方法的实现必须有所不同。希望您最终得到这个结果,但我仍然很乐意为您提供添加到列表的答案阵型中间,干杯