What is the key difference between a HashMap and a TreeMap and what should be the key factor to choose HashMap or a TreeMap?