1 HashMap和Hashtable的区别。
    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 

2 ArrayList和LinkList的区别 
两者都是简单的线性序列,都具有相同的接口和外部行为。事实在做某些操作的时候,  
   
  它们的效率会有很大的区别。对于Arraylist,随机访问是一种时间恒定的操作,  
   
  不论你访问哪个元素,所需要的时间是相同的。然而对于Linkedlist,随机访问和选取元素的代价会很大,但是另一方面,如果你要在这个序列中间插入元素的话,Linkedlist的效率会比Arraylist的高出许多。  

3 HashSet和HashTable的区别 
hashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
     HashMap中元素的排列顺序是不固定的)。HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。集合框架”提供两种常规的Map实现:HashMap和TreeMap (TreeMap实现SortedMap接口)。
     在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和 equals()的实现。  这个TreeMap没有调优选项,因为该树总处于平衡状态。
  在设计阶段你可以用Linkedlist,到了性能调整阶段,你可以用Arraylist。因为两者的基类都是list