我已经成功实现了Radix排序,但是我有以下代码要转换为由循环创建。
private static LinkedList[] bucket = {
new LinkedList(), // -9
new LinkedList(), // -8
new LinkedList(), // -7
new LinkedList(), // -6
new LinkedList(), // -5
new LinkedList(), // -4
new LinkedList(), // -3
new LinkedList(), // -2
new LinkedList(), // -1
new LinkedList(), // 0
new LinkedList(), // 1
new LinkedList(), // 2
new LinkedList(), // 3
new LinkedList(), // 4
new LinkedList(), // 5
new LinkedList(), // 6
new LinkedList(), // 7
new LinkedList(), // 8
new LinkedList() // 9
};
然而,我无法弄清楚如何做到这一点。 我尝试了这个但是我遇到了编译器错误。
private static LinkedList[] bucket;
int thing = 19;
while(thing != 0){
bucket = new LinkedList();
thing--;
}
这对我的基数排序的功能并不重要,因为它完美无缺,我只是觉得用循环初始化我的桶会更干净。如果有人能告诉我如何做到这一点,我将非常感激。
答案 0 :(得分:1)
你走了:
private static LinkedList[] bucket = new LinkedList[19];
static {
for (int i = 0; i < bucket.length; ++i) {
bucket[i] = new LinkedList();
}
}
答案 1 :(得分:0)
您的LinkedList[]
存储桶未初始化,因此您将在运行时获得NullPointerException
。此外,数组元素分配的语法错误
private static LinkedList[] bucket = new LinkedList[20];
int thing = 19;
while(thing != 0){
bucket[thing] = new LinkedList();
thing--;
}
答案 2 :(得分:0)
首先设置数组的大小(将在其中有多少LinkedList
),然后从零迭代到该大小,并将数组的索引设置为新的{{ 1}} S上。
例如,如果LinkedList
是你的迭代器变量,你会说:
i
记住您正在处理的类型:单个bucket[i] = new LinkedList();
及其中的数组。您不能将整个数组分配给一个LinkedList
。您必须将元素分配给LinkedList
,以匹配类型。