我正在为Android开发并想知道,ArrayList和List之间的主要区别是什么?
答案 0 :(得分:3)
为了在Java中处理对象集合,提供了Collection接口。这可以在java.util package
中找到。
“List”是一个接口,它扩展了集合接口,提供了一些额外的方法,而不是集合接口来处理集合。其中“ArrayList”是“List”接口的实际实现。
除了List 接口中提供的方法之外, ArrayList类只有几个方法。这没有太大区别。唯一的区别是,您正在创建第一个父接口的引用和实现List的类的引用(即第二个中的ArrayList类)。如果您使用第一个,您将能够调用List接口中可用的方法,并且您无法调用ArrayList类中可用的新方法。如果您使用第二个方法,则可以自由使用全部ArrayList中可用的方法。
修改强>
在Java应用程序开发中,当您应该将集合框架对象作为参数传递给方法时,最好是使用
List tempList = new ArrayList();
somemethodcall(tempList);
因为在将来由于性能限制,如果要更改实现以使用linkedlist或其他实现List接口的类而不是ArrayList,则只能在一个点(即)实例化部分进行更改。否则,您应该在所有区域进行更改,无论何时,您已将特定的类实现用作方法参数。
答案 1 :(得分:2)
user370305给出了一个确切的解释。这也可以帮助您理解Java中的集合层次结构。
答案 2 :(得分:1)
List
是ArrayList
实现的接口。如果您正在尝试创建一种需要某种List
的方法,但您并不关心实际使用的实现方法,那么请使用List
。
如果你实际上正在实例化一个类,那么你必须选择List
的一些实现,其中一个是ArrayList
List<String> l1 = new ArrayList<String>();
就是一个例子。
您无法实例化接口,因此如果您尝试执行以下操作会收到错误:
List<String> l2 = new List<String>();
答案 3 :(得分:0)
关于wikipedia有一篇很好的文章,其中arraylist被称为“动态数组”。
如果您正在尝试优化您的应用程序,您应该查看文章旁边的表格。
答案 4 :(得分:0)
List
是一个接口,ArrayList
是List
接口的实现。除ArrayList
接口中提供的方法外,List
类只有几种方法。