Java中Collection和Arraylist的区别?

Difference between Collection and Arraylist in Java?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the benefit of polymorphism using Collection interface to create ArrayList object?

1
2
 ArrayList al=new ArrayList();
 Collection c=new ArrayList();

对象alc有什么区别?它们是相同的还是什么?


集合API是一组支持对象集合操作的类和接口。

类的示例:hashset、hashmap、arraylist、linkedlist、treeset和treemap。接口示例:集合、集合、列表和映射。

然而,arraylist:它是可重新调整大小的数组实现。属于集合中的"list"组。它允许所有元素,包括空元素。它不是线程安全的。

集合:它实现对集合进行操作的多态算法。

集合:它是集合层次结构中的根接口。

以下接口(集合类型)扩展了集合接口:

  • 集合
  • 排序集
  • 导航器
  • 排队
  • 德克

Java没有使用集合接口的可用实现,所以您必须使用所列出的子类型之一。集合接口只定义了这些集合子类型共享的一组方法(行为)。这使您可以忽略正在使用的特定类型的集合,并将其视为集合。这是标准的继承,所以没有什么神奇的,但它有时仍然是一个很好的特性。


第二个是接口编码。它允许ArrayList与另一个Collection交换(例如VectorTreeSet,而不产生任何副作用。


创建了相同的对象,但引用不同。

因此,在第二种情况下,您只能像处理Collection一样处理ArrayList,除非是Casting。


1
Collection foo = new ArrayList();

这一个更通用,您可以从集合的其他实现中获得好处。


al中,您被阻止只使用arraylist。除了arraylist之外,不能转换/强制转换任何内容。

c中,可以转换/转换实现Collection接口的任何类。


Collection是一个接口。看看这些方法。

List接口具有按索引访问的方法。list还扩展了Collection接口。

ArrayList是实现List接口的具体实现。数组列表

你所做的是一些抽象。

如果你这样做:

1
Collection foo = new ArrayList();

您将无法访问List接口方法。例如使用索引访问。