不兼容的类型:通用链表中需要的int found对象错误

时间:2011-06-12 16:45:40

标签: java arrays generics linked-list

我正在编写基数排序算法(仅对整数进行排序)并遇到问题,这可能是一个简单的修复,我似乎无法找到它。

我在这里创建和链接列表数组来保存我的整数:

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

这是来自util的通用链表,我只需要它来保存整数。 我的问题是当我尝试运行此代码时

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

在我从“队列”中删除的行上,我得到了所需的int found对象错误。 我的链接列表无论如何都是整数,所以为什么它说它是一个对象呢?我是否必须在某处或那些地方徘徊?

感谢。

1 个答案:

答案 0 :(得分:2)

看看你的声明:

LinkedList[] buckets

您已声明一组原始 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++;
    }
}