我已经成功地实现了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--;
}
这对基数排序的功能并不重要,因为它工作得很完美,我只是认为用循环初始化我的bucket会更干净。也就是说,如果有人能启发我如何做到这一点,我将不胜感激。
开始:
private static LinkedList[] bucket = new LinkedList[19];
static {
for (int i = 0; i < bucket.length; ++i) {
bucket[i] = new LinkedList();
}
}
您的LinkedList[]
存储桶未初始化,因此您将在运行时获得NullPointerException
。此外,数组元素分配的语法是错误的
private static LinkedList[] bucket = new LinkedList[20];
int thing = 19;
while(thing != 0){
bucket[thing] = new LinkedList();
thing--;
}
首先设置数组的大小(其中有多少LinkedList
),然后从零迭代到该大小,并将数组的索引设置为新的LinkedList
。
例如,如果i
是迭代器变量,您会说:
bucket[i] = new LinkedList();
记住您正在处理的类型:单个LinkedList
和它们的数组。不能只将整个数组分配给一个LinkedList
。您必须将元素分配给LinkedList
,以匹配类型。