Java List List=new ArrayList()和List List=new LinkedList()的区别是什么
我脑子里有个问题: 有什么区别 1列表=新的ArrayList 2列表=新建链接列表? 无论我以上述两种方式初始化列表,它仍然只能使用列表中的方法,而不能使用ArrayList或LinkedList,不是吗Java List List=new ArrayList()和List List=new LinkedList()的区别是什么,java,list,arraylist,linked-list,Java,List,Arraylist,Linked List,我脑子里有个问题: 有什么区别 1列表=新的ArrayList 2列表=新建链接列表? 无论我以上述两种方式初始化列表,它仍然只能使用列表中的方法,而不能使用ArrayList或LinkedList,不是吗 我从一个网站上读到,它被称为接口编程,开发人员很容易从ArrayList更改为LinkedList,或者将来从ArrayList更改为LinkedList。但是,如果我按照上面所示的方式初始化,就无法使用ArrayList/LinkedList方法,即使可以灵活地更改初始化方式。我相信这是有
我从一个网站上读到,它被称为接口编程,开发人员很容易从ArrayList更改为LinkedList,或者将来从ArrayList更改为LinkedList。但是,如果我按照上面所示的方式初始化,就无法使用ArrayList/LinkedList方法,即使可以灵活地更改初始化方式。我相信这是有原因的。希望能找到答案。在这两种情况下,您都创建了一个名为list的变量,其类型为指针 在第一种情况下: 列表=新的ArrayList 您使用类启动了列表变量,该类是的实现,简而言之: 列表接口的可调整大小的数组实现 在第二种情况下: 列表=新建链接列表 您使用类启动了列表变量,该类是的实现,简而言之: 列表和Deque接口的双链表实现 总之,在这两种情况下,您都会得到一个列表,可以根据列表接口定义使用它。主要区别在于: 实现它在性能和内存使用方面有所不同 使用时,每个实现可能包含其他功能 在特定的实现环境中
大致的区别是您应该使用ArrayList,而不应该使用LinkedList。在我20年的Java程序员生涯中,我做过一次后者,现在回想起来,我后悔了。@OleV.V。为什么不应该使用LinkedList?我认为这个问题的措辞令人困惑,但我相信OP是在询问将变量类型声明为List的原因,而不是将变量类型声明为实际的具体实现类(ArrayList或LinkedList)。所以我不觉得这重复了链接的问题。同意@bobulus。标题是误导性的。@IvanKaloyanov你可以,如果你喜欢,但为什么你应该?在性能无关紧要的10种情况中,有9种情况下,你可以掷硬币。如果确实重要,请选择ArrayList。我从未见过LinkedList在时间和空间方面表现更好的案例。即使在中间插入和删除也不例外。