Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。ArrayList不具备线程同步的安全性,但速度较快。Vector具备线程安全
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的一个实现。
String类对象数组可直接调用java.util.Arrays.sort()排序,而StringBuffered类对象数组不可以
String类的对象和StringBuffered类对象如果想要使用对象的方法进行一些处理,那么StringBuffered类对象可以使用public String toString()或public String (StringBuffer buffer)转为String类的对象使用,而String类的对象可以使用public StringBuffer(String str) 转为StringBuffered类对象使用。
一般的字符串对象都用String类,因为方便赋值,而且其具有的方法也多。而StringBuffered类对象主要用于经常修改的字符串对象。因为String类是常量类,其对象不可修改,对于其连接“+”操作会产生大量的内存垃圾,而StringBuffered类对象不会。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 |