несовместимые типы: требуется int обнаружена ошибка объекта в общем связном списке - PullRequest
0 голосов
/ 12 июня 2011

Я пишу алгоритм сортировки по основанию (который ТОЛЬКО сортирует целые числа) и столкнулся с проблемой, которая могла бы быть легко решаемой, я просто не могу его найти.

Я создаю иМассив связанных списков здесь для хранения моих целых чисел:

LinkedList[] buckets = {new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>(), new LinkedList<Integer>()};

Это общий связный список из утилиты, и он мне нужен только для хранения целых чисел.Моя проблема в том, что когда я пытаюсь запустить этот код

            for (int j = 0; j < buckets.length; j++) {
            while (!buckets[j].isEmpty()) {
                a[pos] = buckets[j].removeFirst();
                pos++;
            }

В строке, где я удаляю из своей "очереди", я получаю требуемую ошибку int found object.Мои списки ссылок в любом случае являются целыми числами, так почему он говорит, что это объект?Должен ли я где-то опускать что-то в этом духе? ​​

Спасибо.

1 Ответ

2 голосов
/ 12 июня 2011

Посмотрите на ваше объявление:

LinkedList[] buckets

Вы объявили массив raw LinkedList ссылок. Вам нужно будет сообщить компилятору, что они будут LinkedList<Integer> значениями:

LinkedList<Integer> buckets = ...;

К сожалению, массивы и дженерики не очень хорошо играют вместе. Я предлагаю вам использовать List<LinkedList<Integer>>, например:

List<LinkedList<Integer>> buckets = new ArrayList<LinkedList<Integer>>();

for (int i = 0; i < 10; i++)
{
    buckets.add(new LinkedList<Integer>());
}

Тогда:

for (LinkedList<Integer> bucket : buckets)
{
    while (!bucket.isEmpty())
    {
        a[pos] = bucket.removeFirst();
        pos++;
    }
}
...