我知道您可以创建自己的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.ArrayList
或java.util.ArrayDeque
,它们在几乎所有情况下都比LinkedList
好。请参阅Java中何时在ArrayList上使用LinkedList?
如果你真的需要更专业的东西,实现你自己的,但前提是你真的,真的需要它。
只有当你真正需要的时候,才让你的类实现java.util.List
。
避免必须实施";"一切";在接口中是扩展java.util.AbstractList
:这只需要您提供get(int)
、size()
的实现,如果您希望列表是可修改的,则还需要提供set(int, E)
(您很可能希望覆盖其他列表以获得更好的链表性能)。
不要重新发明轮子,除非你需要现有轮子无法提供的非常具体的东西。
此外,可能值得一提的是,链表的性能特性较差,因为它们占用的内存不是连续的,这会导致从主内存(链接)进行多次读取。