# Java: Old and New Vector Methods

When the new Collections API was introduced in Java 2 to provide uniform data structure classes, the Vector class was updated to implement the List interface. Use the List methods because they are common to other data structure. If you later decide to use something other than a Vector (eg, ArrayList, or LinkedList, your other code will not need to change.
Even up thru the first several versions of Java 2 (SDK 1.4), the language had not entirely changed to use the new Collections methods. For example, the `DefaultListModel` still uses the old methods, so if you are using a `JList`, you will need to use the old method names. There are hints that they plan to change this, but still and interesting omission.

## Replacements for old methods

The following methods have been changed from the old to the new Vector API.

Old Method | New Method
--- | ---
void addElement(Object) | boolean add(Object)
void copyInto(Object[]) | Object[] toArray()
Object elementAt(int) | Object get(int)
Enumeration elements() | Iterator iterator()ListIterator listIterator()
void insertElementAt(Object, int) | void add(index, Object)
void removeAllElements() | void clear()
boolean removeElement(Object) | boolean remove(Object)
void removeElementAt(int) | void remove(int)
void setElementAt(int) | Object set(int, Object)

## Insuring use of the new API

When you create a Vector, you can assign it to a List (a Collections interface). This will guarantee that only the List methods are called.

    Vector v1 = new Vector();  // allows old or new methods.
    List   v2 = new Vector();  // allows only the new (List) methods.