【发布时间】:2013-01-11 06:06:49
【问题描述】:
可能重复:
What is the benefit of polymorphism using Collection interface to create ArrayList object?
ArrayList al=new ArrayList();
Collection c=new ArrayList();
对象al 和c 有什么区别?他们两个是一样的还是什么?
【问题讨论】:
标签: java
可能重复:
What is the benefit of polymorphism using Collection interface to create ArrayList object?
ArrayList al=new ArrayList();
Collection c=new ArrayList();
对象al 和c 有什么区别?他们两个是一样的还是什么?
【问题讨论】:
标签: java
集合 API 是一组支持对对象集合进行操作的类和接口。
类示例:HashSet、HashMap、ArrayList、LinkedList、TreeSet 和 TreeMap。 接口示例:Collection、Set、List 和 Map。
鉴于, ArrayList:它是可重新调整大小的数组实现。属于集合中的“列表”组。它允许所有元素,包括 null。它不是线程安全的。
集合:它实现了对集合进行操作的多态算法。
Collection:它是集合层次结构中的根接口。
以下接口(集合类型)扩展了 Collection 接口:
Java 不附带 Collection 接口的可用实现,因此您必须使用列出的子类型之一。 Collection 接口只定义了这些 Collection 子类型中的每一个共享的一组方法(行为)。这使得可以忽略您正在使用的特定类型的集合,并将其视为集合。这是标准继承,所以没有什么神奇之处,但有时它仍然是一个不错的功能。
【讨论】:
第二个是coding to interfaces。它允许将ArrayList 替换为另一个Collection(例如Vector 或TreeSet),而不会产生任何副作用。
【讨论】:
创建了相同的对象,但引用不同。
因此,在第二种情况下,您只能使用 ArrayList,就好像它只是 Collection,除非强制转换。
【讨论】:
在al 中,您只能使用数组列表。除了arraylist,你不能转换/转换任何东西。
在c 中,您可以转换/转换任何实现Collection 接口的类。
【讨论】:
Collection foo = new ArrayList();
这个更通用,你可以得到 Collection 的其他实现的好处。
【讨论】: