我是java的新手,我正在努力学习,所以我只是想知道如何通过我的阵列进行线性搜索。 这是我到目前为止所做的,但它不起作用。
public boolean contains(Object elem)
{
boolean result = false;
for(int i=0;i<this.vector.length;i++)
if(elem.equals(this.vector[i]))
result=true;
else
result=false;
return result;
}
public int indexOf(V elem)
{
int pos = 0;
for(int i=0;i<this.vector.length;i++)
if(this.vector[i].equals(elem))
pos=i;
else
pos= -1;
return pos;
}
答案 0 :(得分:3)
如果传递的contains()
是数组中的最后一项,则elem
函数仅返回true。如果您找到它,则应立即return true
。
您的indexOf()
方法遇到同样的问题。
答案 1 :(得分:1)
找到元素后,您错过了break
。
答案 2 :(得分:1)
Oneliner:
Arrays.asList(vector).indexOf(elem);
它只是在内存中创建并删除了一个对象(ArrayList)。在大多数情况下不应该成为问题。
答案 3 :(得分:0)
当你找到匹配时,你需要打破你的循环。
答案 4 :(得分:0)
该代码存在一些问题:在这两种方法中,即使已经找到元素,也始终搜索整个数组。在这两种方法中,这都是错误的来源(不太重要的是:它没有那么高效。)
for(int i=0;i<this.vector.length;i++)
if(elem.equals(this.vector[i]))
return true;
return false;
(和其他方法类似)可能是更好的实现。