线性阵列搜索

时间:2011-05-19 16:35:05

标签: java arrays

我是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;
    }

5 个答案:

答案 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;

(和其他方法类似)可能是更好的实现。