HashMap和HashSet的不同之处简介说明
下文笔者将从HashMap及HashSet的概念着手处理其不同之处,如下所示:
HashSet的简介
HashSet实现Set接口
HashSet中的内容不允许有重复的值
当我们使用HashSet之前
需确保对象重写equals()和hashCode()方法
然后比较对象的值是否相等
以确保set中没有储存相等的对象
当没有重写这两个方法,将会使用这个方法的默认实现
//添加元素 public boolean add(object o);
HashMap的简介
HashMap实现了Map接口
Map接口对键值对进行映射
Map中不允许重复的键key
Map接口有两个基本的实现,HashMap和TreeMap
TreeMap保存了对象的排列次序,而HashMap则不能
HashMap允许键和值为null
HashMap是非synchronized的
但collection框架提供方法能保证HashMap synchronized
这样多个线程同时访问HashMap时,能保证只有一个线程更改Map
添加元素的方法
public Object put(Object Key,Object value)
根据以上的简介说明,我们可以得出HashSet和HashMap的区别
HashMap | HashSet |
HashMap实现了Map接口 | HashSet实现了Set接口 |
HashMap储存键值对 | HashSet仅仅存储对象 |
使用put()方法将元素放入map中 | 使用add()方法将元素放入set中 |
HashMap中使用键对象来计算hashcode值 | HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false |
HashMap比较快,使用唯一的键来获取对象 | HashSet较HashMap来说比较慢 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通