java—将对象添加到arraylist的最后一个元素

sqxo8psd  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(877)

我正在创建一个可调整大小的对象数组。下面是我的 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;
    }
}
ulydmbyx

ulydmbyx1#

你可以用标准的方法 Arrays.copyOf 它立即创建具有新大小的输入数组的副本(在本例中,长度增加):

import java.util.Arrays;

//...

public boolean add(Object toAdd) {

    if (toAdd != null) {
        int oldLength = theList.length;
        theList = Arrays.copyOf(theList, oldLength + 1);
        theList[oldLength] = toAdd;

        return true;
    } else {
        System.out.println("Cannot add null object");
        return false;
    }
}
zbwhf8kr

zbwhf8kr2#

添加方法说明:
假设 theList 是10。
他们创造了一个 temp 数组大小为 theList + 1 ,所以 temp11 . 现在,对象被添加到 temp 除了最后一个元素 tem[10] .
要添加最后一个元素,可以使用以下两种方法之一:

temp[theList.length] //temp[10]

temp[temp.length-1] //temp[10]

他们用第一种方法添加 toAdd 对象。

vc9ivgsu

vc9ivgsu3#

将我的评论移至答案:
数组索引是基于零的。这意味着最后一个索引是 length - 1 . 自从你创造了 temp 长度为 theList.length + 1 这意味着 temptheList.length .

相关问题