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