Java 我应该使用ArrayList<&燃气轮机;或列表<&燃气轮机;

Java 我应该使用ArrayList<&燃气轮机;或列表<&燃气轮机;,java,android,optimization,Java,Android,Optimization,我正在为Android开发,想知道ArrayList和List之间的主要区别是什么?对于Java中对象集合的处理,提供了集合接口。这在java.util包中提供 “List”是一个接口,它扩展了集合接口,提供了一些比集合接口更多的方法来处理集合。其中as“ArrayList”是“List”接口的实际实现 除了列表界面中可用的方法外,ArrayList类只有几个方法。这方面没有太大区别。唯一的区别是,您在第一个接口中创建父接口的引用,在第二个接口中创建实现列表的类(即ArrayList类)的引用。

我正在为Android开发,想知道ArrayList和List之间的主要区别是什么?

对于Java中对象集合的处理,提供了集合接口。这在
java.util包
中提供

“List”是一个接口,它扩展了集合接口,提供了一些比集合接口更多的方法来处理集合。其中as“ArrayList”是“List”接口的实际实现

除了列表界面中可用的方法外,ArrayList类只有几个方法。这方面没有太大区别。唯一的区别是,您在第一个接口中创建父接口的引用,在第二个接口中创建实现列表的类(即ArrayList类)的引用。如果使用第一个,则可以调用列表界面中可用的方法,并且不能调用ArrayList类中可用的新方法。其中,如果使用第二个,则可以自由使用ArrayList中可用的所有方法

编辑:

在Java应用程序开发中,当您应该将集合框架对象作为参数传递给方法时,最好使用

List tempList = new ArrayList();
somemethodcall(tempList);

因为,将来由于性能限制,如果您要将实现更改为使用linkedlist或其他实现List接口的类,而不是ArrayList,那么您只能在一个点(即仅实例化部分)进行更改。否则,您应该在所有区域进行更改,在任何地方,您都使用了特定的类实现作为方法参数

List
ArrayList
实现的接口。如果您试图创建一个需要某种类型的
列表
的方法,但不关心实际使用的实现,那么请使用
列表

如果您实际正在实例化一个类,那么您必须选择
List
的一些实现,其中一个是
ArrayList

List<String> l1 = new ArrayList<String>();
List l1=new ArrayList();
这就是一个例子

您无法实例化接口,因此如果尝试执行以下操作,将出现错误:

List<String> l2 = new List<String>();
List l2=新列表();

有一篇关于这方面的好文章,其中arraylist被称为“动态数组”。

如果您试图优化应用程序,请查看文章旁边的表格。

List
是一个接口,
ArrayList
列表
接口的实现。除了
列表
界面中可用的方法外,
ArrayList
类只有几个方法


看一看关于

用户370305的短文,它给出了确切的解释。这还可以帮助您理解Java中的集合层次结构


您看过他们各自的文档了吗?这应该能立即回答问题。@KonradRudolph我不认为这是必然的事实,对于不了解接口等的人来说,文档看起来就像其他任何类一样。@Jon好吧,如果你不了解接口,那么整个讨论都没有意义。@KonradRudolph我只是不认为人们应该假设某些东西对其他人来说是显而易见的,仅仅因为它对他们来说是显而易见的。我纠正了这一点,说你不能在不知道这一点的情况下很好地编程Java,但是您可以通过始终使用诸如ArrayList之类的接口实现来轻松完成编程,甚至不知道接口是什么。forEach和.clone(浅拷贝)是主要的。