我想到一个问题:
有什么区别
1)清单清单= new ArrayList()
2)列表=新的LinkedList()?
无论我以上述两种方式初始化列表,还是只能使用List中的方法,而不能使用ArrayList或LinkedList,不是吗?
我从一个网站(http://www.corejavaguru.com/blog/java/new-arraylist)读到,它说它被称为“编程到接口”,对于开发人员而言,将来很容易将其从ArrayList更改为LinkedList,反之亦然。但是,如果我以上述方式进行初始化,我将无法使用ArrayList / LinkedList的方法,即使更改初始化方式也很灵活。我相信是有原因的。希望找到答案。
答案 0 :(得分:0)
在两种情况下,您都创建了一个名为list
的变量,其类型为List (Interface)作为指针。
在第一种情况下:
列表列表=新的ArrayList()
您使用类ArryaList初始化了list
变量,该变量是List interface的一种实现,简而言之:
List接口的可调整大小的数组实现
在第二种情况下:
列表列表=新的LinkedList()
您使用类LinkedList初始化了list
变量,该变量是List interface的一种实现,简而言之:
List和Deque接口的双链列表实现
最后,在两种情况下,您都会得到一个列表,可以根据列表接口定义使用该列表。主要区别在于: