HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。首先让我们来看看什么是HashMap和HashSet,然后再来比较它们之间的分别。什么是HashSetHashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。public boolean add(Object o)方法用来在Set中添加元素,当元素值重复时则会立即返回false,如果成功添加的话会返回true。什么是HashMapHashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。Map接口有两个基本的实现,HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap则不能。HashMap允许键和值为null。HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。public Object put(Object Key,Object value)方法用来将元素添加到map中。你可以阅读这篇文章看看HashMap的工作原理,以及这篇文章看看HashMap和HashTable的区别。HashSet和HashMap的区别*HashMap*                                   *HashSet*
HashMap实现了Map接口                        HashSet实现了Set接口
HashMap储存键值对                            HashSet仅仅存储对象
使用put()方法将元素放入map中                使用add()方法将元素放入set
HashMap中使用键对象来计算hashcode值          HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap比较快,因为是使用唯一的键来获取对象    HashSet较HashMap来说比较慢

HashSet和HashMap的区别 1相关推荐

  1. Java中Link,set 和Map的区别,ArrayList,HashSet和HashMap的区别。

    首先 List Set Map 分别继承了ArrayList HashSet HashMap , list 允许重复,set不允许重复,map是键值对形式,key-value key不能重复. 期次A ...

  2. HashSet和HashMap的区别

  3. Java集合系列之四大常用集合(ArrayList、LinkedList、HashSet、HashMap)的用法

    Java集合系列之四大常用集合(ArrayList.LinkedList.HashSet.HashMap)的用法 ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是A ...

  4. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等

    1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...

  5. HashSet和HashMap

    目录 一.HashSet 1.HashSet简单介绍 2.HashSet的常用方法 3.HashSet保证元素不重复的原理 二.HashMap 1.HashMap简单介绍 2.HashMet的常用方法 ...

  6. HashSet 和 TreeSet的区别

    HashSet 和 TreeSet的区别 HstSet和TreeSet详解 HashSet 内部是由哈希表(实际上是一个 HashMap 实例)支持的.它不保证 set 元素的迭代顺序. TreeSe ...

  7. Java集合 -- HashSet 和 HashMap

    HashSet 集合 HashMap 集合 HashSet集合 1.1 Set 接口的特点 Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B:没有索引 C:存入集合的元素没有重复 1. ...

  8. Java集合 HashSet 和 HashMap

    HashSet 集合 HashMap 集合 HashSet集合 Set 接口的特点 Set体系的集合: 存入集合的顺序和取出集合的顺序不一致 没有索引 存入集合的元素没有重复 HashSet 使用&a ...

  9. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  10. 036_Hashtable和HashMap的区别

    1. Hashtable和HashMap的区别 1.1. Hashtable线程安全, 效率低; HashMap线程不安全, 效率高 1.2. Hashtable父类是Dictionary; Hash ...

最新文章

  1. 从最强AI算力到“元脑”2.0,智算加速产业变革
  2. MPLS的简单配置4
  3. docker 打包mysql_基于docker部署mysql的数据持久化问题
  4. ai圆角插件_【干货满满】AI软件技巧排版所需
  5. Python群机器人发送城市天气情况
  6. Educational Codeforces Round 55 (Rated for Div. 2)
  7. HTTP 404 - 未找到文件 怎么样解决
  8. 四种方法下载网络文本数据到本地内存
  9. MongoDB 表结构分析工具介绍 -- Variety
  10. python语法简图
  11. Excel两列数据比较,相同的保存在另外一列
  12. 第4章 基本TCP套接口编程
  13. 今天学习到的关于mysql数据库的linux命令
  14. php源码 辅助发卡_PHP个人发卡平台源码|自动发货网站源码 V5免授权版
  15. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾 三
  16. 如何将您的Steam个人资料设为私人
  17. CET-4 week9 阅读 写译
  18. 汇编程序设计:代码转换程序
  19. 数字语音信号处理学习笔记——语音信号的数字模型(1)
  20. IDEA中创建编写JSP

热门文章

  1. MVVM开发模式MVVM Light Toolkit
  2. 局域网电脑访问IIS
  3. 5、overflow、hover
  4. Django学习-22-Form
  5. 校园推广方案:常用手段及百试不爽的方法
  6. redis异常处理篇(持续更新中...)
  7. PHP基础--PDO的常用操作
  8. Hadoop的eclipse1.1.2插件的安装和配置
  9. NetSuite 在中国 - 一个全程信息化管理平台
  10. 获取当前电脑全部网络连接名字