我正在开发Android应用,想知道ArrayList和List之间的主要区别是什么?
我正在开发Android应用,想知道ArrayList和List之间的主要区别是什么?
为了处理Java中的对象集合,提供了Collection接口。这在java.util包
中可用。
“List”是一个接口,它扩展了Collection接口,提供了一些额外的方法来处理集合。而“ArrayList”是“List”接口的实际实现。
ArrayList类仅有极少数方法,除了List接口中可用的方法以外。这方面没有太大的区别。唯一的区别是,在第一个中,您正在创建父接口的引用,而在第二个中,您正在创建实现List(即ArrayList类)的类的引用。如果使用第一个,则可以调用List接口中可用的方法,但无法调用ArrayList类中新添加的方法。而如果使用第二个,则可以自由地使用ArrayList中所有可用的方法。
编辑:
在Java应用程序开发中,如果您将集合框架对象作为参数传递给方法,则最好选择
List tempList = new ArrayList();
somemethodcall(tempList);
因为未来由于性能限制,如果您要更改实现以使用LinkedList或实现List接口的某些其他类,而不是ArrayList,则只需更改一个点(即仅实例化部分)。否则,您将需要在所有区域进行更改,无论您在哪里使用特定类实现作为方法参数。
用户370305给出了一个精确的解释。这也有助于你理解Java中的集合层次结构。
List
是一个接口,ArrayList
实现了这个接口。如果你想创建一个方法需要一种List
,但你并不关心真正使用的是哪种实现方式,那么就可以使用List
。
如果实例化一个类,则必须选择List
的一种实现方式,其中之一就是ArrayList
。
List<String> l1 = new ArrayList<String>();
这是一个例子。
接口无法被实例化,因此如果你尝试执行以下操作,将会出现错误:
List<String> l2 = new List<String>();
List
是一个接口,而 ArrayList
则是 List
接口的实现。除了 List
接口中可用的方法外,ArrayList
类仅有少量方法。
请查看关于 JavaBeat - List 和 ArrayList 之间的区别? 的简短文章。