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