我正在为Android开发,想知道ArrayList和List之间的主要区别是什么?我应该使用ArrayList <?>或列表<?>
回答
为了处理Java中的对象集合,已经提供了Collection接口。这在java.util package
可用。
“列表”是一个接口,它扩展了集合接口,提供某种额外方法而不是集合接口来处理集合。其中“ArrayList”是“List”接口的实际实现。
ArrayList类除了列表接口中的可用方法外,还只有几种方法。这里没有太大的区别。唯一的区别是,您正在创建第一个父接口的引用,以及第二个实现List的类的引用(即ArrayList类)。如果你使用第一个,你将能够调用List接口中可用的方法,并且不能调用ArrayList类中可用的新方法。如果使用第二个方法,则可以自由使用all ArrayList中可用的方法。
编辑:
在Java应用程序的开发,当你应该通过集合框架对象作为参数传递给方法,那么最好是去与
List tempList = new ArrayList();
somemethodcall(tempList);
,因为在未来由于性能限制,如果您要更改实现以使用链表或其他实现List接口的类而不是ArrayList,则只能在实例化部分的一个点(即)处更改。否则,你应该改变所有的领域,你曾经使用特定的类实现作为方法参数。
List
是ArrayList
实现的接口。如果您尝试创建某种方法需要某种类型的List
,但您不打扰实际使用的实现方式,请使用List
。
如果你实际上是一个类实例化,那么你必须选择List
其中之一的一些实施ArrayList
List<String> l1 = new ArrayList<String>();
将是一个例子。
无法实例的接口,因此会得到一个错误,如果你想做到以下几点:
List<String> l2 = new List<String>();
我相信这是一个接口。 – 2012-07-18 12:31:45
@Benito Lol我编辑过,我累了,写了错误的东西:) – 2012-07-18 12:32:35
上有wikipedia有关,其中ArrayList中被称为“动态数组”的好文章。
如果您正在尝试优化您的应用程序,则应该查看文章旁边的表格。
List
是一个接口,ArrayList
是List
接口的实现。除了List
接口中可用的方法以外,ArrayList
类只有几种方法。
user370305给出了一个确切的解释。这也可以帮助您了解Java中的集合层次结构。
- 1. ArrayList的用法<ArrayList<E>>
- 2. 使用列表<ClassName> abc = new ArrayList <ClassName>();
- 3. 我应该声明/初始化的ArrayList的列表,的ArrayList,或<Cat>
- 4. ArrayList <ArrayList <String>> vs ArrayList <Object>
- 5. 转换ArrayList <ArrayList <String>>“返回”ArrayList <String>
- 6. 我可以将列表<Date>转换为ArrayList <String>?
- 7. 为什么我们写ArrayList <ArrayList <Integer>> list = new ArrayList <>();
- 8. 我应该公开ISubject <T>或IObservable <T>和IObserver <T>?
- 9. ArrayList <ArrayList <Integer>> IndexOutOfBoundsException
- 10. Transpose ArrayList <ArrayList <String>> in Java
- 11. ArrayList <> vs ArrayList <Integer>
- 12. 我应该使用boost :: ptr_vector <T>还是vector <boost :: shared_ptr <T>>?
- 13. 我应该使用<html>,<head>和<body>标记吗?
- 14. 我应该使用HTML <button>还是<input>?
- 15. 我们是否应该每<input>使用<label>?
- 16. 如何声明HashMap <String,ArrayList <ArrayList <String> >>?
- 17. Java的可迭代<Iterable<T>>到ArrayList的<ArrayList<T>>
- 18. 新的ArrayList <Class>()或新的ArrayList <>()在Java中?
- 19. 从列表<myType>继承或扩展列表<myType>
- 20. 转换列表<ScanResults>到的ArrayList <HashMap的<String>>
- 21. 列表<Object>和列表<?>
- 22. 从列表<>
- 23. 我们应该使用<base href =“”/>?
- 24. 使用LINQ将'ArrayList'转换为'列表<string>'(或'列表<T>')使用LINQ将
- 25. 如何投射ArrayList <>从列表<>
- 26. 列表<String> log = new ArrayList <String>();
- 27. 无法从ArrayList中<String>转换到列表<Comparable>
- 28. 使用ArrayList的<Object>
- 29. 如何使用Eigen 3表示“<真或假> = <array><= <scalar>”?
- 30. 使用>>,>,> |,||,| <,<,<<,<<
你看过他们各自的文件吗?这应该立即回答这个问题。 – 2012-07-18 12:28:48
@KonradRudolph我不认为这是真的,对于不了解接口等的人来说,文档看起来像任何其他类。 – 2012-07-18 12:34:36
@Jon好吧,如果你不知道接口,那么整个讨论都是无关紧要的。 – 2012-07-18 12:35:32