Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used

squid : S1149

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:

Noncompliant Code Example

Vector cats = new Vector();

Compliant Solution

ArrayList cats = new ArrayList(); 

Exceptions

Use of those synchronized classes is allowed in method signatures when overriding an existing method.

@Override
public Vector getCats() {...}