Позвоните addFirst на Коллекцию - PullRequest
0 голосов
/ 15 апреля 2011
Collection col = new LinkedList();

Есть ли способ позвонить col.addFirst?

Ответы [ 4 ]

5 голосов
/ 15 апреля 2011

Да, если вы приведете к LinkedList:

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

Но это не рекомендуется, потому что вы не всегда знаете конкретный тип коллекции.Вы можете проверить с помощью instanceof, но это не очень хороший объектно-ориентированный код.Если вам действительно требуется LinkedList, требуется LinkedList (а не Collection)

3 голосов
/ 15 апреля 2011

Если вы объявляете переменную как коллекцию, это означает, что вы обычно планируете рассматривать эту переменную в остальной части вашей программы как простую коллекцию, а не как связанный список. Методы, предлагаемые интерфейсом Collection, должны быть достаточными для остальной части вашей программы, использующей эту переменную.

Если вам нужен доступ к определенному методу, присутствующему только в классе LinkedList, тогда переменная должна быть объявлена ​​как LinkedList.

2 голосов
/ 08 октября 2013

Если вы используете List вместо Collection, тогда доступен метод .add (). Добавьте индекс 0, чтобы поставить его на первую позицию.

list.add(0, object)
2 голосов
/ 15 апреля 2011

Я не уверен, почему вам нужно использовать Collection в этом случае, однако вы все равно можете «программировать на интерфейс, а не на реализацию», если вы используете интерфейс java.util.Deque , который, случайно расширяет java.util.Collection

Deque<String> deque = new LinkedList<String>();
deque.addFirst("Hello");
Collection<String> collection = deque;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...