Линейный поиск - PullRequest
       2

Линейный поиск

0 голосов
/ 20 марта 2012

Я только что получил домашнее задание, и он просто создает алгоритм линейного поиска в Java.Однако я также хочу, чтобы этот код работал с любыми типами данных, такими как строки, целые, двойные числа и т. Д., А также с различными типами контейнеров, такими как массивы, хэш-наборы, списки и коллекции, поэтому мне не придется тратить так много дополнительной информации.линии для перегрузки метода.Вот текущий код.

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

Однако в моем другом классе для тестирования у меня есть массив int и int для поиска.Я получаю сообщение об ошибке «Метод linear (Object [], Object) в типе Search не применим для аргументов (int [], int)»

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

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;
}
}
0 голосов
/ 15 июля 2017

Та же проблема, но с новой настройкой из-за обновленной IDE для JavaSE 1.8

public static <E extends Comparable<>> int linear (E[] contents, E query) {
    for (int index = 0; index < contents.length; ++index)
    {
        if (query.equals(contents[index]))
        {
            return index;
        }
     }
     return -1;
}

Без:

<E extends Comparable<>>

вы получаете E не может быть разрешен к типу.

Чтобы использовать метод, вы должны создать массив, используя

Integer[] intArray = {23,45,21,55,234,1,34,90};

и НЕ

int[] intArray = {23,45,21,55,234,1,34,90};

Затем для вызова метода:

System.out.println("Key found at Index: " + linear(intArray, 21));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...