Подтвердить что ты не робот

Разница между Java Vector.add() и Vector.addElement()?

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

4b9b3361

Ответ 1

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

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

  • add() возвращает boolean для успеха. addElement() имеет возвращаемый тип void.

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

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

List<String> list = Collections.synchronizedList(new ArrayList<String>());
list.add("hello");

Ответ 2

Подпись метода отличается, 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       }

Ответ 3

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

public void addElement (E obj)

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

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

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

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

Ответ 4

addElement

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

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

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

и

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

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

Ответ 5

Основное отличие → add() всегда возвращает true, а addElement() не имеет возвращаемого значения.

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

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

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

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