我正在编写基数排序算法(仅对整数进行排序)并遇到问题,这可能是一个简单的修复,我似乎无法找到它。
我在这里创建和链接列表数组来保存我的整数:
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对象错误。 我的链接列表无论如何都是整数,所以为什么它说它是一个对象呢?我是否必须在某处或那些地方徘徊?
感谢。
答案 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++;
}
}