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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nagi 中级黑马   /  2014-9-16 10:26  /  1474 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天遇到了一个问题, HashSet和HashMap的区别!请求帮助?

6 个回复

倒序浏览
1、HashSet底层是采用HashMap实现的。HashSet 的实现比较简单,HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
2、HashMap的key就是放进HashSet中对象,value是Object类型的。
3、当调用HashSet的add方法时,实际上是向HashMap中增加了一行(key-value对),该行的key就是向HashSet增加的那个对象,该行的value就是一个Object类型的常量。
回复 使用道具 举报 1 0
学习了  
回复 使用道具 举报
hashSet是从hashMap中分离出来的,hashMap通过键保证唯一和hashSet保证唯一的方法是一样的,只不过hastMap比hashSet多了一个和键相对应的值而已
回复 使用道具 举报
我的总结如下:
HashSet 和 HashMap 的区别 》》》
首先 Hash 代表哈希表,用到哈希值。然后考虑 Set 和 Map 的区别特性就可以了。

Set : 无序,不可以重复元素。
HashSet:数据结构是哈希表。线程是非同步的。
        保证元素唯一性的原理:判断 HashCode 是否相同,
        如果相同,还会继续判断元素的 equals 方法,是否为 true 。

Map 集合概述:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
         和 Set 合很像。其实,Set 集合底层就是使用了 Map 集合。
HashMap :底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。

回复 使用道具 举报

加油,学习。
回复 使用道具 举报
*HashMap*        *HashSet*
HashMap实现了Map接口        HashSet实现了Set接口
HashMap储存键值对        HashSet仅仅存储对象
使用put()方法将元素放入map中        使用add()方法将元素放入set中
HashMap中使用键对象来计算hashcode值        HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap比较快,因为是使用唯一的键来获取对象        HashSet较HashMap来说比较慢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马