在Collection上调用addFirst

时间:2011-04-15 18:52:18

标签: java collections

Collection col = new LinkedList();

有办法拨打col.addFirst吗?

4 个答案:

答案 0 :(得分:5)

是的,如果你转向LinkedList

((LinkedList) col).addFirst(..)

但这是不鼓励的,因为你并不总是知道集合的具体类型。您可以查看instanceof,但这不是一个好的面向对象的代码。如果您确实需要LinkedList,则需要LinkedList(而不是Collection

答案 1 :(得分:3)

如果将变量声明为Collection,这意味着您通常计划在程序的其余部分中将此变量视为简单集合,而不是链接列表。 Collection接口提供的方法对于使用此变量的程序的其余部分应该足够了。

如果需要访问仅存在于LinkedList类中的特定方法,则该变量应声明为LinkedList。

答案 2 :(得分:2)

我不确定为什么你需要在这种情况下使用Collection,但如果你使用接口 java.util.Deque 你仍然可以“编程到接口而不是实现” ,偶然,扩展java.util.Collection

Deque<String> deque = new LinkedList<String>();
deque.addFirst("Hello");
Collection<String> collection = deque;

答案 3 :(得分:2)

如果使用List而不是Collection,则可以使用.add()方法。在索引0处添加以将其放在第一个位置。

list.add(0, object)