【发布时间】:2020-12-05 06:43:24
【问题描述】:
我正在创建一个可调整大小的对象数组。下面是我的 add 函数,我在其中传递了我想添加到我的数组列表中的对象。
该功能有效,但是如果有人可以解释此代码
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;
}
}
【问题讨论】:
-
你知道数组索引是从0开始的吗?
-
数组索引从零开始。这意味着最后一个索引是
length - 1。由于您创建了长度为theList.length + 1的temp,这意味着temp的最后一个索引是theList.length。 -
顺便说一句,您应该使用 List 而不是数组,因为它们可以增长
-
@David 这段代码看起来像是学生练习,所以数组可能是要求的一部分。
-
@DavidBrossard 这个方法看起来像是自定义列表类的实现,用作教授数组操作的练习,而使用
ArrayList会破坏练习的目的。