Разница между Java Vector.add () и Vector.addElement ()? - PullRequest
16 голосов
/ 22 июня 2010

Пожалуйста, объясните разницу между методом Vector.add() и методом Vector.addElement() вместе с примером кода

Ответы [ 5 ]

28 голосов
/ 22 июня 2010

add() происходит из интерфейса List, который является частью Java Collections Framework, добавленной в Java 1.2.Vector предшествовал этому и был доукомплектован им.Конкретные различия:

  1. addElement() - synchronized.add() нет.В Java Collections Framework, если вы хотите, чтобы эти методы были синхронизированы, оберните коллекцию в Collections.synchronizedList()

  2. add() возвращает логическое значение для успеха.addElement() имеет тип возврата void.

Разница synchronized технически не является частью API.Это деталь реализации.

Благоприятствует использованию List методов.Как я уже сказал, если вы хотите synchronized List сделать:

List<String> list = Collections.synchronizedList(new ArrayList<String>());
list.add("hello");
6 голосов
/ 22 июня 2010

Подпись метода отличается, add возвращает true, тогда как addElement является недействительным.

из http://www.docjar.com/html/api/java/util/Vector.java.html

  153       public synchronized boolean add(E object) {
  154           if (elementCount == elementData.length) {
  155               growByOne();
  156           }
  157           elementData[elementCount++] = object;
  158           modCount++;
  159           return true;
  160       }

и

223       public synchronized void addElement(E object) {
  224           if (elementCount == elementData.length) {
  225               growByOne();
  226           }
  227           elementData[elementCount++] = object;
  228           modCount++;
  229       }
5 голосов
/ 22 июня 2010

В javadoc упоминается, что:

public void addElement (E obj)

Этот метод по функциональности идентичен методу add (E) (который является частью интерфейса List).

Причина, по которой они оба существуют (из одного и того же Javadoc):

Начиная с платформы Java 2 v1.2, этот класс был модифицирован для реализации интерфейса List, что сделало его членом Java Collections Framework.

List имеет метод add, поэтому в Vector была добавлена ​​реализация, но для обеспечения обратной совместимости addElement не была удалена

1 голос
/ 22 июня 2010

addElement

Этот метод по функциональности идентичен методу add (Object) (который является частью интерфейса List).

Таким образом, нет никакой разницы между:

Vector v = new Vector();
v.addElement( new Object() );

и

Vector v = new Vector();
v.add( new Object() );

Этот класс (вектор) существует с Java1.0 и теперь в значительной степени заменен на ArrayList, преимущество которого в том, что он немного быстрее.

0 голосов
/ 13 июля 2017

главное отличие -> add () всегда будет возвращать true, в то время как addElement () не имеет возвращаемого значения.

в отделе: Метод addElement (object) по функциональности идентичен методу add (Object) (который является частью интерфейса List).

add (Object) объясняется тем, что Vector реализует интерфейс List, и он появился после Java 1.2, когда Vector был перемещен в Collections: классы коллекций из более ранних версий Vector и Hashtable были модифицированы для реализации интерфейсов коллекции.

addElement - это «оригинальный» метод вектора.

нашел этот ответ здесь .. В чем разница между add () и addElement () в векторе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...