不多说,直接上干货!

  HashMap  和  HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们是我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。

  首先让我们来看看什么是HashMap和HashSet,然后再来比较它们之间的分别。

什么是HashSet?

  HashSet实现了Set接口,它不允许集合中有重复的值当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现
  public boolean add(Object o)方法用来在Set中添加元素,当元素值重复时则会立即返回false,如果成功添加的话会返回true。

什么是HashMap?

  HashMap实现了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中。

  更具体,见

牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

HashSet和HashMap的区别

牛客网Java刷题知识点之为什么HashMap和HashSet区别相关推荐

  1. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  2. 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  3. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  4. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  5. 牛客网Java刷题知识点之字节缓冲区练习之从A处复制文本文件到B处(BufferedReader、BufferedWriter)、复制文本文件的原理图解...

    不多说,直接上干货! CopyTextByBufTest.java package zhouls.bigdata.DataFeatureSelection.test;import java.io.Bu ...

  6. 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...

    不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...

  7. 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树

    不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...

  8. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  9. 牛客网Java刷题知识点之表达式类型的自动提升

    不多说,直接上干货! 转载于:https://www.cnblogs.com/zlslch/p/7553808.html

  10. 牛客网java刷题笔记2019-1-4

    牛客网java刷题笔记 2019-1-4 1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值, 构造器和方法的区别: 功能和作用的不同 构造器是为了创建 ...

最新文章

  1. golang 切片 接口_Go 经典入门系列 18:接口(一)
  2. Get Started with Apex Unit Tests
  3. 哈佛经济学教授卧底贫民窟8年,揭开穷人最大真相:这比贫穷更可怕
  4. 基于 Spring Boot 的 Restful 风格实现增删改查
  5. FastDFS测试图片上传
  6. 机器人统治人类?别逗!现实中的机器人是这样的
  7. AssetPostprocessor.OnPreprocessModel
  8. origin 一键导出文件夹中所有图形
  9. 简单综合案例的统计学方法(总结试验性定量数据分析)
  10. Word 2007文档结构图 大纲视图 目录默认折叠收缩
  11. Bypass注入(WAF绕过)
  12. 安卓tv html,Emby for Android TV
  13. PiliPala Player-a simple media player
  14. 计算机语言学考研考什么,语言学及应用语言学考研有哪些内容-考研经验
  15. idea 彩虹屁合并语音包,语音包无法使用 解决教程
  16. PySOT测试报错:AssertionError: /pysot/experiments/siamrpn_r50_l234_dwxcorr/Basketball/img/0001.jpg
  17. aso优化重要ASO优化技巧大全,ASO标题优化技巧:实战案例解析
  18. HeaFirst设计模式-单件模式[单例模式](Singleton Pattern)
  19. MRS CDL架构设计与实现
  20. python 代码片段备忘

热门文章

  1. Silverlight实用窍门系列:58.Silverlight中的Binding使用(三)-数据集合的绑定
  2. VS 2003/VS 2005 迅雷资源下载网址
  3. Mac如何修改文件默认打开方式?
  4. Arturia Buchla Easel V for Mac(Buchla音乐画架插件)
  5. Runtime之消息转发
  6. 少编码多思考:代码越多 问题越多
  7. [xsy2282]cake
  8. ReultSet有什么作用和使用
  9. 前端性能优化的常用手段
  10. C语言atoi()函数:将字符串转换成int(整数)