Java中Collection和Arraylist的区别?

时间:2013-01-11 06:06:49

标签: java

  

可能重复:
  What is the benefit of polymorphism using Collection interface to create ArrayList object?

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

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

6 个答案:

答案 0 :(得分:11)

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

类的示例:HashSet,HashMap,ArrayList,LinkedList,TreeSet和TreeMap。 接口示例:集合,集合,列表和映射。

然而, ArrayList:它是可重新调整大小的数组实现。属于集合中的“列表”组。它允许所有元素,包括null。它不是线程安全的。

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

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

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

  • 列表
  • 的SortedSet
  • NavigableSet
  • 队列
  • 的Deque

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

答案 1 :(得分:4)

第二个是coding to interfaces。它允许将ArrayList换成另一个Collection(例如VectorTreeSet),而不会产生任何副作用。

答案 2 :(得分:3)

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

因此,在第二种情况下,您可以仅使用ArrayList Collection,只需{{1}},除非进行投射。

答案 3 :(得分:2)

CollectionInterface。看看方法。

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

ArrayList是实现List接口的具体实现。 ArrayList的

你正在做的是一些抽象。

如果你这样做:

Collection foo = new ArrayList();

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

答案 4 :(得分:2)

al中,您被禁止仅使用arraylists。除了arraylist之外,你不能转换/投射任何东西。

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

答案 5 :(得分:2)

Collection foo = new ArrayList();

这个更通用,你可以从Collection的其他实现中获益。