下面是我在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;
}
我的代码是正确的还是需要改进?
我的代码正确吗。。。
这取决于您的要求。如果需要实现java.util.List
API,那么javadoc会这样说:
"…更正式地说,返回最低索引i,使得(o==null?get(i)==null:o.equals(get(i))),或者如果没有这样的索引,则返回-1。"
您使用的是==
而不是equals
。。。这是不正确的。
如果您不需要来实现List
,那么我们无法评论==
的正确性。。。或者就代码的任何方面而言。(例如,需求可以说列表元素位置从1开始!!)
还是我需要改进它?
如果它不符合要求,您需要修复它。(但我们通常不会将错误修复描述为"改进"。)
如果你要求进行代码审查,最好在代码审查网站上提出这样的问题。
但从风格上讲,我不会使用for
循环。我会使用while循环,并使用node == null
作为循环终止条件。(您的代码隐含地依赖于size
是否正确。如果不正确,您可能会得到NPE。)
如果data
不是基元类型,为了确保进行彻底的比较,应该使用node.data.equals(item)
。