我要将我创建的类中的项目插入到链表中,但是在添加之前,我必须找到正确的索引点以将其插入(因此,这些项目按字母顺序排列)。
我有一些有效的代码,但是效率很低,在半体面的机器上花5秒钟才能添加10000个项目。我想知道是否有更有效的方法。
到目前为止,我设法使其正常工作的唯一方法就是如此。其他任何方法最终都会错误地添加项目(我猜是不正确地添加到列表末尾)
在所示的代码中,我将一个名称(以及其他两个不相关且已属于itemClass的变量)传递给以下代码
if (llist.size() == 0) {
llist.add(itemClass);
}
else if (llist.get(0).name.compareTo(name)>0) {
llist.add(0, itemClass);
}
else if (llist.get(llist.size() - 1).name.compareTo(name) < 0) {
llist.add(llist.size(), itemClass);
}
else {
int i = 0;
while (llist.get(i).name.compareTo(name) < 0) {
i++;
}
llist.add(i, itemClass);
}
目前,此功能完全可以达到预期的效果,但是如上所述,它花费了难以置信的时间。我只是期望更快一些,可能会有很大幅度。
答案 0 :(得分:0)
您有一个链接列表,但没有使用其实际的“链接”
删除所有对get
的呼叫
您应该使用listIterator而不是调用get
。
此外,您还应该使用listIterator的add
方法