何时使用列表,何时使用LinkedList?(java)

何时使用列表,何时使用LinkedList?(java),java,Java,当我们使用 List<String> lst = new LinkedList<>(); LinkedList<String> lklst = new LinkedList<>(); List lst=newlinkedlist(); 当我们使用 List<String> lst = new LinkedList<>(); LinkedList<String> lklst = new

当我们使用

List<String> lst = new LinkedList<>();     
LinkedList<String> lklst = new LinkedList<>();
List lst=newlinkedlist();
当我们使用

List<String> lst = new LinkedList<>();     
LinkedList<String> lklst = new LinkedList<>();
LinkedList lklst=newlinkedlist();

起初,我以为它们是一样的,但今天,我意识到它们不一样了。例如,如果我调用
lst.getFirst()
,它将告诉我有一个错误。但是,如果我使用
lklst.getFirst()
,它就可以正常工作。我的问题是我们什么时候使用lklst?为什么它们不同?另外,它是否对Map应用相同的规则。谢谢

在左侧,您正在声明变量的类型,
lst
。由于
lst
的类型是
List
,因此即使
lst
指向的对象实际上是
LinkedList
,也只能访问
列表的方法。在声明一个具体类型的变量(如
LinkedList
(访问更多方法/行为)与一个更抽象的接口(更安全、更好的划分代码)之间,有一个内在的权衡

这是一个很大的话题,对于什么时候做一件事和什么时候做另一件事,没有一个简单的答案(尽管有很多关于它的建议!)-你需要找出哪一件适合你的用例


-第52项:通过对象的接口引用对象是本期的一个非常规范的引用,正如标题所示,建议您更喜欢
List
而不是
LinkedList

@soorapadman完全不是这样,请在此处阅读更多关于该主题的内容:何时使用
LinkedList