A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Vector和ArrayList的区别,Hashtable和HashMap的区别

4 个回复

倒序浏览
vector线程同步 效率低
arraylist线程不同步 效率快
回复 使用道具 举报
ArrayList和Vector功能类似。
整体上ArrayList是Vector的“裸奔新版”
Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。
所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能

ArrayList不具备线程同步的安全性,但速度较快,所以叫裸奔。
Vector具备线程安全。


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 就必须为之提供外同步。
回复 使用道具 举报
Vector线程同步,效率低
ArrayList线程不同步,效率高
Hashtable 不可以存null键和null值,线程同步
HashMap 可以存null键和null值,线程不同步
一般使用ArrayList和HashMap,需要同步时自己加锁
回复 使用道具 举报
ArrayList:特点:查询速度很快。但是增删稍慢。线程不同步。如果不是频繁操作增删的动作,我们建议使用ArrayList.
Vector:线程同步。被ArrayList替代了。因为效率低。
他们俩的相同点 底层的数据结构使用的都是数组结构。
Hashtable:不可以存入null键null值。该集合是线程同步的。效率低一般元老级都是线程同步的。
HashMap:允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。HashMap是无序的。这也是Hash结构的特点。
他们俩的相同点 底层是哈希表数据结构。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马