链表的一般用途



我知道您可以创建自己的Linked List类,也可以使用java.util导入一个。像这样:

import java.util.*;  
LinkedList<String> ll=new LinkedList<String>();  

然后用现有的方法对列表做一些事情,比如add、get、set。。。但你也可以创建自己的链接列表,就像这样:

class LinkedList {
Node head; // head of list

class Node {
int data;
Node next;
Node(int d) { data = d; }
}
}

但如果你这样做,你需要创建所有的方法。我的问题很简单,我应该使用方法1还是2?如果两者都很好,什么时候用一个比另一个更好。

如果需要通用List,请使用java.util.LinkedList。它是一个标准类,成熟、测试良好,几乎任何Java开发人员都能很好地理解它……而且,它很简洁,因为你不必实现它

实际上,不要使用它:使用java.util.ArrayListjava.util.ArrayDeque,它们在几乎所有情况下都比LinkedList好。请参阅Java中何时在ArrayList上使用LinkedList?

如果你真的需要更专业的东西,实现你自己的,但前提是你真的,真的需要它。

只有当你真正需要的时候,才让你的类实现java.util.List

避免必须实施";"一切";在接口中是扩展java.util.AbstractList:这只需要您提供get(int)size()的实现,如果您希望列表是可修改的,则还需要提供set(int, E)(您很可能希望覆盖其他列表以获得更好的链表性能)。

不要重新发明轮子,除非你需要现有轮子无法提供的非常具体的东西。

此外,可能值得一提的是,链表的性能特性较差,因为它们占用的内存不是连续的,这会导致从主内存(链接)进行多次读取。

相关内容

  • 没有找到相关文章

最新更新