有什么区别List list = new ArrayList()和List list = new LinkedList()

时间:2018-10-10 13:44:46

标签: java list arraylist linked-list

我想到一个问题: 有什么区别 1)清单清单= new ArrayList()
2)列表=新的LinkedList()? 无论我以上述两种方式初始化列表,还是只能使用List中的方法,而不能使用ArrayList或LinkedList,不是吗?

我从一个网站(http://www.corejavaguru.com/blog/java/new-arraylist)读到,它说它被称为“编程到接口”,对于开发人员而言,将来很容易将其从ArrayList更改为LinkedList,反之亦然。但是,如果我以上述方式进行初始化,我将无法使用ArrayList / LinkedList的方法,即使更改初始化方式也很灵活。我相信是有原因的。希望找到答案。

1 个答案:

答案 0 :(得分:0)

在两种情况下,您都创建了一个名为list的变量,其类型为List (Interface)作为指针。

在第一种情况下:     列表列表=新的ArrayList() 您使用类ArryaList初始化了list变量,该变量是List interface的一种实现,简而言之:

  

List接口的可调整大小的数组实现

在第二种情况下:     列表列表=新的LinkedList() 您使用类LinkedList初始化了list变量,该变量是List interface的一种实现,简而言之:

  

List和Deque接口的双链列表实现

最后,在两种情况下,您都会得到一个列表,可以根据列表接口定义使用该列表。主要区别在于:

  1. 实现在性能和内存使用方面有所不同
  2. 每个实现在使用时都可能包含其他功能 在特定的实施环境中