以下是我在Java中的代码
public int indexOf(E item){
Node<E> node =head;
for(int i=0; i<size;i++) {
node=node.next;
if(node.data==item){
return i+1;
}
}
return -1;
}
我的代码是正确的还是我需要改进它?
答案 0 :(得分:1)
我的代码是否正确......
这取决于您的要求。如果您需要实施java.util.List
API,那么javadoc会说:
&#34; ...更正式地,返回最低的索引i,使得(o == null?get(i)== null:o.equals(get(i)))或 - 1如果没有这样的索引。&#34;
您正在使用==
代替equals
...这是不正确的。
如果您不是必需来实施List
,那么我们无法评论==
的正确性......或者就代码的任何方面而言。 (例如,要求可以说列表元素位置从1开始!!)
......或者我需要改进吗?
如果它不符合要求,您需要解决这个问题。 (但我们通常不会将错误修复描述为&#34;改进&#34;。)
如果您要求进行代码审核,则可以在代码审核网站上更好地询问此类问题。
但从风格上来说,我不会使用for
循环。我使用while循环,并使用node == null
作为循环终止条件。 (您的代码隐含依赖size
正确。如果不是,您可能会获得NPE。)
答案 1 :(得分:0)
如果data
不是原始类型,为了确保彻底比较,您应该使用node.data.equals(item)
。