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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于洋洋 黑马帝   /  2011-7-26 13:37  /  3196 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet,HashMap和Hashtable的区别 ,以及都在什么情况下用?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

正序浏览
黑马网友  发表于 2011-7-26 14:02:58
藤椅
HashSet:底层数据结构是哈希表;当建立某个将要存入HashSet对象中的话,将会在内存中生成对应的地址,这个地址会存入到HashSet对象中,这些存入的地址是按Hash值存储的,是无序的。这就是为什么说HashSet内的元素是无序的。如果存入的哈希值相同,还会比较对象是否相等,如果不相等则哈希值顺延。

HashTable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0出现。

HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。jdk1.2出现,效率相对HashTable要高。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-26 13:47:21
沙发

回复 楼主 的帖子

HashTable现在用的很少了,因为新框架中的HashMap代替了它。他们的区别也就是HashTable是同步的,HashMap是非同步的。而HashMap 和 HashTable是Map的实现类,HashSet是Set的实现类,因此HashSet是不允许有重复元素存在,如果添加了相同的元素,则会被覆盖。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边都有分!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马