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

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

16
задан Michael Mrozek 22 June 2010 в 03:08
поделиться

4 ответа

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

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

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

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

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

List<String> list = Collections.synchronizedList(new ArrayList<String>());
list.add("hello");
28
ответ дан 30 November 2019 в 16:24
поделиться

Сигнатура метода отличается, add возвращает true, а addElement - void.

из 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       }
6
ответ дан 30 November 2019 в 16:24
поделиться

addElement

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

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

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

и

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

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

1
ответ дан 30 November 2019 в 16:24
поделиться

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

public void addElement (E obj)

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

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

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

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

5
ответ дан 30 November 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: