Java 避免多次通话到底意味着什么?

Java 避免多次通话到底意味着什么?,java,list,Java,List,因此,我在一个算法类中,有人要求我重写一个方法,以避免在myAbstractList.java类中使用remove(ee)方法时多次调用indexOf(ee) 1.重写MyAbstractList类的remove(E)方法,以避免多次调用indexOf(E) 我真的没有要求任何人为我写/完成我的项目。老实说,如果我愿意,我可以从内存中重新编写这两个类 在我看来,indexOf(ee)无论如何都不会被多次调用,所以我真的不知道该如何更改它。如果有人能告诉我如何多次调用该方法,我想这会很有帮助 代码

因此,我在一个算法类中,有人要求我重写一个方法,以避免在myAbstractList.java类中使用remove(ee)方法时多次调用indexOf(ee)

1.重写MyAbstractList类的remove(E)方法,以避免多次调用indexOf(E)

我真的没有要求任何人为我写/完成我的项目。老实说,如果我愿意,我可以从内存中重新编写这两个类

在我看来,indexOf(ee)无论如何都不会被多次调用,所以我真的不知道该如何更改它。如果有人能告诉我如何多次调用该方法,我想这会很有帮助

代码 我的摘要列表:
公共抽象类MyAbstractList实现MyList{ 受保护的int size=0;//列表的大小 /**创建默认列表*/ 受保护的MyAbstractList(){ } /**从对象数组创建列表*/ 受保护的MyAbstractList(E[]对象){ for(int i=0;i=0){ 删除(索引(e)); 返回true; }否则{ 返回false; } } } MyList:
公共接口MyList扩展了java.lang.Iterable{
/**在此列表末尾添加新元素*/
公共空间添加(E);
/**在此列表中的指定索引处添加新元素*/
公共无效添加(整数索引,E);
/**清除列表*/
公共空间清除();
/**如果此列表包含元素,则返回true*/
公共布尔包含(E);
/**在指定索引处从此列表返回元素*/
公共E-get(int-index);
/**返回此列表中第一个匹配元素的索引。如果
*没有对手*/
公共综合指数(E);
/**如果此列表不包含任何元素,则返回true*/
公共布尔值为空();
/**返回此列表中最后一个匹配元素的索引如果
*没有对手*/
公共交通最新指数(E);
/**从该列表中删除元素o的第一个匹配项
*左侧的后续元素。如果元素被删除,则返回true*/
公共布尔删除(E);
/**在该列表中的指定位置移除元素,并进行任何移位
*左侧的后续元素。返回从中删除的元素
*名单*/
公共E移除(int索引);
/**将此列表中指定位置的元素替换为
*指定的元素并返回新的集合*/
公共对象集(int索引,E);
/**返回此列表中的元素数*/
公共整数大小();
}

方法
remove
当前调用
indexOf
两次。将结果保存在局部变量中并调用一次。大概

public boolean remove(E e) {
    int index = indexOf(e);
    if (index >= 0) {
        remove(index);
        return true;
    } else {
        return false;
    }
 }
因此,在remove方法中有2个对indexOf()的调用。将值提取到局部变量以避免多次调用

像这样:

public boolean remove(E e) {
final int index = indexOf(e);
if (index >= 0) {
    remove(index);
    return true;
} else {
    return false;
}}

remove(E)
的实现中,有两个对
indexOf
的调用,您应该将其减少为一个调用。好的,谢谢,这是其中一个“我没想到这么简单”的事情。我仍然担心这太容易回答了,因为这是我在看问题时想到的第一件事。因为每个人都同意我的观点,尽管我要去问我的教授。好的,谢谢你,这是一件“我没想到这么简单”的事情。我仍然担心这太容易回答了,因为这是我在看问题时想到的第一件事。因为每个人都同意我的观点,尽管我要去问我的教授。好的,谢谢你,这是一件“我没想到这么简单”的事情。我仍然担心这太容易回答了,因为这是我在看问题时想到的第一件事。因为每个人都同意,尽管我会同意,只要问问我的教授就行了。
public boolean remove(E e) {
    int index = indexOf(e);
    if (index >= 0) {
        remove(index);
        return true;
    } else {
        return false;
    }
 }
public boolean remove(E e) {
if (indexOf(e) >= 0) {
    remove(indexOf(e));
    return true;
} else {
    return false;
}}
public boolean remove(E e) {
final int index = indexOf(e);
if (index >= 0) {
    remove(index);
    return true;
} else {
    return false;
}}