问题描述
||
我正在写一个基数排序算法(仅对整数排序),遇到了一个问题,这可能是一个简单的解决方法,我似乎找不到它。
我在这里创建和链接列表数组来保存我的整数:
LinkedList[] buckets = {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对象错误。
我的链表仍然是保持整数,为什么它说它是一个对象?我是否必须沿着这些路线向下投射某处?
谢谢。
解决方法
查看您的声明:
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++;
}
}