Пожалуйста, объясните разницу между методом Vector.add()
и методом Vector.addElement()
вместе с фрагментом кода
Разница между Java Vector.add() и Vector.addElement()?
Ответ 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?