Java 声明列表并将其分配给LinkedList或ArrayList时,是否仍保留了不同的性能优势?
采用以下两行代码:Java 声明列表并将其分配给LinkedList或ArrayList时,是否仍保留了不同的性能优势?,java,list,Java,List,采用以下两行代码: List<String> listOfStrings = new ArrayList<>(); List<String> listOfStrings2 = new LinkedList<>(); List listofstring=new ArrayList(); List listOfStrings2=新建LinkedList(); 我知道编程到接口是一个很好的实践,但是作为一个新手,我试图理解,因为我们只能在这两个实例
List<String> listOfStrings = new ArrayList<>();
List<String> listOfStrings2 = new LinkedList<>();
List listofstring=new ArrayList();
List listOfStrings2=新建LinkedList();
我知道编程到接口是一个很好的实践,但是作为一个新手,我试图理解,因为我们只能在这两个实例上调用
List
方法,它们是否仍然像ArrayList
s或LinkedList
s那样“行为”(就像它们在排序/添加等时执行各自的类一样)是的,它们的行为确实类似于ArrayList或LinkedList,您可以使用它保存更多不同的列表(或您自己的对象),并在迭代数组时调用超类方法的不同实现。LinkedList和ArrayList
实现的列表
,集合
,Iterable
。。。接口,但它们有不同的方法实现(如add()
,remove()
,等等)。调用这些方法时,Arraylist
和LinkedList
将因实现不同而具有不同的行为/性能。变量的类型不会更改对象的类型。它们不仅“表现”像ArrayList或LinkedList,它们仍然是ArrayList或LinkedList。我想让我困惑的是,既然你只能调用列表方法,我不确定它们到底是什么,谢谢你的澄清。@AntonyChristodoulou你可以把接口看作是一种“契约”。这是一种表达方式,“我保证,无论这实际上是什么类型的对象,它都会公开此方法列表供您使用。”这些方法背后的实际逻辑与接口无关,只要它遵守合同。谢谢@Jordan。现在你提醒了我接口的用途这个语法现在完全有意义了。我建议你花点时间通读一遍。里面有很多很好的信息。