我正在创建一个可调整大小的对象数组。下面是我的 add
函数中传递要添加到arraylist中的对象。
但是,如果有人能解释这个代码,这个函数就可以工作了 temp[theList.length] = toAdd;
我知道这是在新arraylist的末尾添加参数参数。但让我困惑的是我传入的索引 temp[]
. 我不应该包括 theList.length + 1
而不仅仅是 theList.length
?
public boolean add(Object toAdd) {
if (toAdd != null) {
Object[] temp = new Object[theList.length + 1];
for (int i = 0; i < theList.length; i++) {
temp[i] = theList[i];
}
temp[theList.length] = toAdd;
theList = temp;
return true;
} else {
System.out.println("Invalid type");
return false;
}
}
3条答案
按热度按时间ulydmbyx1#
你可以用标准的方法
Arrays.copyOf
它立即创建具有新大小的输入数组的副本(在本例中,长度增加):zbwhf8kr2#
添加方法说明:
假设
theList
是10。他们创造了一个
temp
数组大小为theList + 1
,所以temp
是11
. 现在,对象被添加到temp
除了最后一个元素tem[10]
.要添加最后一个元素,可以使用以下两种方法之一:
或
他们用第一种方法添加
toAdd
对象。vc9ivgsu3#
将我的评论移至答案:
数组索引是基于零的。这意味着最后一个索引是
length - 1
. 自从你创造了temp
长度为theList.length + 1
这意味着temp
是theList.length
.