java—我正在尝试创建一个类似于类arraylist中的lastindexof()的方法,但在查找元素的最后一个索引时遇到了一些问题

3vpjnl9f  于 2021-07-07  发布在  Java
关注(0)|答案(2)|浏览(222)
public int lastIndexOf(E o) {
        int res = -1;
        for(int i = 0; i < size() ; i++) {
            if(o.equals(this.elementData[i]) ) { 
                return i;  
            }
        }
        return res; 
    }

}

我无法返回元素的最后一个索引。说我们有 String tmp [] = {"EECS", "2030", "Class","Example about", "Array", "List", "Array", null, null, null}; 在这里,我检查元素的最后一个索引 Arraytmp 但是我的代码返回元素出现的第一个索引。如何接近最后一个索引?任何帮助都将不胜感激

r7s23pms

r7s23pms1#

你需要改变 return ires = i; 因为在找到第一个项时,方法将返回值并结束它,但您需要迭代到数组中的最后一个元素,并在方法结束时返回该元素的索引:

public int lastIndexOf(E o) {
    int res = -1;
    for (int i = 0; i < size(); i++) {
        if (o.equals(this.elementData[i])) {
            res = i;
        }
    }
    return res;
}

或者您可以尝试从数组的末尾检查值的索引,如果找到元素,则在循环的末尾返回索引else res 将返回等于 -1 表示未找到:

public int lastIndexOf(E o) {
    int res = -1;
    for (int i = (size() -1); i >= 0; i--) {
        if (o.equals(this.elementData[i])) {
            return i;
        }
    }
    return res;
}
0s0u357o

0s0u357o2#

你应该从头开始迭代,这样当你找到你的对象时,它肯定是最后一个,你就不需要继续迭代数组的其余部分了。

public int lastIndexOf(E o) {
    int res = -1;
    for (int i = size() -1; i >= 0; i--) 
    {
        if (o.equals(this.elementData[i])) 
        {
            return i;
        }
    }
    return res;
}

相关问题