About data structure
Hashtable is implemented using a linkedList array.
HashSet is implemented using a Hashtable.
TreeSet is a sorted collection. It's implemented using a red-black tree.
About red-black tree:
http://www.cs.auckland.ac.nz/software/AlgAnim/red_black.html
http://wangdei.iteye.com/blog/236157
Basic override
the synchronized keyword is not part of the method signature and thus maybe added during overriding.
for example. You can have
public abstract void increment();
And in sub classes. You can have
public synchronized void increment() {}
or
public void increment() {}