有效地按字母顺序插入链接列表

时间:2019-05-05 02:19:52

标签: java linked-list processing-efficiency

我要将我创建的类中的项目插入到链表中,但是在添加之前,我必须找到正确的索引点以将其插入(因此,这些项目按字母顺序排列)。

我有一些有效的代码,但是效率很低,在半体面的机器上花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);
}

目前,此功能完全可以达到预期的效果,但是如上所述,它花费了难以置信的时间。我只是期望更快一些,可能会有很大幅度。

1 个答案:

答案 0 :(得分:0)

您有一个链接列表,但没有使用其实际的“链接”

删除所有对get的呼叫

您应该使用listIterator而不是调用get

此外,您还应该使用listIterator的add方法