java - 线性搜索泛型

标签 java generics search

我刚刚收到了一份家庭作业,它只是用 java 创建一个线性搜索算法。然而,我也想让这段代码适用于任何数据类型,如字符串、整数、 double 等,以及不同类型的容器,如数组、哈希集、列表和集合,这样我就不必浪费这么多额外的时间行来重载该方法。这是当前的代码。

public class Search
{
    public int linear (Object[] contents, Object query)
    {
        for (int index = 0; index < contents.length; ++index)
        {
            if (query.equals(contents[index]))
            {
                return index;
            }
         }
         return -1;
    }
}

但是,在我的其他类(class)中,为了测试,我有一个 int 数组和一个要搜索的 int 。我收到一条错误消息“Search 类型中的方法 Linear(Object[], Object) 不适用于参数 (int[], int)”

最佳答案

int 不是对象,而是基元。您可以使用 Integer[]。更好的是,您应该使用泛型。您可能还想使用列表而不是数组(只是一个想法):我在下面展示了两者。

import java.util.List;
public class LinearSearch<E>
{
public int linear (E[] contents, E query)
{
    for (int index = 0; index < contents.length; ++index)
    {
        if (query.equals(contents[index]))
        {
            return index;
        }
     }
     return -1;
}

public int linear (List<E> contents, E query)
{
    for (int index = 0; index < contents.size(); ++index)
    {
        if (query.equals(contents.get(index)))
        {
            return index;
        }
     }
     return -1;
}
}

关于java - 线性搜索泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778513/

相关文章:

c# - 非通用接口(interface)是通用接口(interface)的同义词

python - 在列表中搜索字母

php - 如何编写搜索脚本以返回最接近搜索文本/关键字的文本?

java - 将原始双值数组转换为对象引用

java - LibGDX - 正确使用多边形类

带有通配符的 Java 抽象泛型方法用具体类型实现

algorithm - 提高搜索结果的相关性

java - 将 Admob 6.2.1 SDK 添加到我的项目时遇到问题

java - Jsoup简单的HTML标签分割

c# - 通用列表 - 在列表中移动一个项目