Early classes of the Java API, such as Vector, Hashtable and StringBuffer, were synchronized to make them
thread-safe. Unfortunately, synchronization has a big negative impact on performance, even when using these collections from a single thread.
It is better to use their new unsynchronized replacements:
ArrayList or LinkedList instead of Vector Deque instead of Stack HashMap instead of Hashtable StringBuilder instead of StringBuffer Vector cats = new Vector();
ArrayList cats = new ArrayList();
Use of those synchronized classes is ignored in the signatures of overriding methods.
@Override
public Vector getCats() {...}