首页
学习
活动
专区
圈层
工具
发布

HashMap与HashSet的区别?

面试中经常被问到HashMap与HashSet的区别。于是本渣静下心来总结了一下HashSet与HashMap的区别。...先了解一下HashMap跟HashSet HashSet: HashSet实现了Set接口,它不允许集合中出现重复元素。...当我们提到HashSet时,第一件事就是在将对象存储在 HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有 储存相同的对象。...Map中不允许出现重复的键(Key)。Map接口有两个基本的实现 TreeMap和HashMap。TreeMap保存了对象的排列次序,而HashMap不能。...HashSet与HashMap的区别: ? HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 HashSet较HashMap来说比较慢。

4.8K00

HashMap 和 HashSet 区别

看过 HashSet 源码的人就应该知道:HashSet 底层就是基于 HashMap 实现的。...(HashSet 的源码非常非常少,除了 clone()、writeObject()、readObject() 是 HashSet 本身实现之外,其他方法都是直接调用 HashMap 中的方法。...(key) 计算 hashcode HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说,hashcode 可能相同,所以 equals() 方法从是用来判断对象的相等性 HashSet...如何检查重复 当对象 add() 入 HashSet 时,会先计算对象的 hashcode 值,来判断对象加入的位置,同时也会与其他加入的对象的 hashcode 值作比较;如果没有相符的 hashcode...== 与 equals() 的区别 ==是指引用是否相同,是对内存地址进行比较; equals()指的是值是否相同,是对字符串的内容进行比较。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HashMap和HashSet区别

    如果你看过 HashSet 源码的话就应该知道:HashSet 底层就是基于 HashMap 实现的。...(HashSet 的源码非常非常少,因为除了 clone()、writeObject()、readObject()是 HashSet 自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法。...HashSet如何检查重复 当你把对象加入HashSet时,HashSet会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,如果没有相符的hashcode...但是如果发现有相同hashcode值的对象,这时会调用equals()方法来检查hashcode相等的对象是否真的相同。如果两者相同,HashSet就不会让加入操作成功。...==与equals的区别 ==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较 equals()是对字符串的内容进行比较

    58910

    初识JAVA:HashMap与HashSet的区别

    面试中经常被问到HashMap与HashSet的区别。于是本渣静下心来总结了一下HashSet与HashMap的区别。...先了解一下HashMap跟HashSet HashSet: HashSet实现了Set接口,它不允许集合中出现重复元素。...当我们提到HashSet时,第一件事就是在将对象存储在 HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有 储存相同的对象。...Map中不允许出现重复的键(Key)。Map接口有两个基本的实现 TreeMap和HashMap。TreeMap保存了对象的排列次序,而HashMap不能。...HashSet与HashMap的区别: HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 HashSet较HashMap来说比较慢。

    38930

    hashmap和hashtable和hashset的区别_反映和反应的区别

    大家好,又见面了,我是你们的朋友全栈君。 HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。...力争多角度,全方位的展示二者的不同,做到此问题的终结版。...作者 Hashtable的作者: HashMap的作者: Hash Map的作者比Hashtable的作者多了著名顶顶的并发大神Doug Lea。他写了util.concurrent包。...而HashMap则总是使用2的幂作为哈希表的大小。 之所以会有这样的不同,是因为Hashtable和HashMap设计时的侧重点不同。Hashtable的侧重点是哈希的结果更加均匀,使得哈希冲突减少。...这从而导致了Hashtable和HashMap的计算hash值的方法不同 计算hash值的方法不同 为了得到元素的位置,首先需要根据元素的 KEY计算出一个hash值,然后再用这个hash值来计算得到最终的位置

    1.1K10

    【Java集合框架ArrayList、LinkedList、HashSet之间的区别】

    Java集合框架ArrayList、LinkedList、HashSet之间的区别 1. 实现方式: 2. 插入和删除操作的效率: 3. 随机访问的效率: 4....内存占用: 综上所述,选择ArrayList还是LinkedList或HashSet取决于具体的使用场景。...ArrayList、LinkedList、HashSet是Java集合框架中不同的类,它们之间的差异体现在以下方面: 1....HashSet:插入和删除元素的效率高,通过哈希函数直接计算出在数组中的位置。 3. 随机访问的效率: ArrayList:根据索引可以直接访问元素,随机访问效率高。...HashSet:由于需要维护哈希表,可能占用更多的内存空间。 综上所述,选择ArrayList还是LinkedList或HashSet取决于具体的使用场景。

    20010

    HashSet的秘密

    这篇文章我们先轻松一下,不讲HashMap,来说说HashSet。如果有点Java基础的童鞋,应该都知道List和Set都实现自Collection,List保证元素的添加顺序,元素可重复。...有两个很重要的实现HashSet和TreeSet。其中黄色部分前面已经说过了是要重点了解的,老规矩,上代码,大家可以先想一想以下代码的执行结果。...();//new了一个HashSet new了一个HashSet,前面的文章已经说过很多次了,只要是看到new,这货肯定在堆内存里开辟了一块空间,先找到HashSet的构造函数看看,看到如下代码:...,如果put时key重了,会返回被覆盖的value值(oldValue),否则返回null,这儿的HashSet又给包装了一下,如果key没有重(oldValue == null),就返回true,否则返回...为PRESENT,继续画图 image.png 所有元素的value都指向Object对象,HashSet虽然底层是用HashMap来实现的,但由于用不到HashMap的value,所以不会为底层HashMap

    44030

    HashSet、TreeSet的特点

    HashSet和TreeSet都是Java中常见的集合框架,它们都实现了Set接口,并提供了存储无序、不可重复元素的功能。但是它们的实现方式、性能和适用场景有所不同。...HashSet的添加、删除、查找操作的时间复杂度都是O(1)。HashSet的优点:查找元素的时间复杂度为O(1);添加、删除元素的时间复杂度为O(1);内存占用比较少;没有顺序限制。...HashSet的缺点:迭代HashSet时的顺序是不确定的,因为HashSet不保证顺序;HashSet的性能与哈希函数的质量有关,如果哈希函数的质量不好,可能会导致冲突增多,影响性能;存储元素的顺序与添加的顺序不一定相同...O(log n),但是不能存储null值,迭代的顺序是按照元素的顺序输出的,比HashSet的性能差一些。...根据具体的需求,我们可以选择使用HashSet或TreeSet。

    1.3K20

    HashSet集合

    HashSet集合: hashSet集合是把存储进来的对象先计算出对象的hash值后才进行对应的存储,因为存储进来的对象都有一个hash值,所以在进行查询的时候不需要像其他集合一样,一个个去查询来得到所需要的对象...hashSet集合只需要把要查询的对象计算出hash值后查找存储区域里hash值一样的对象,然后拿出来即可。这样检索速度就会相当快,这也是hashSet集合的优点。...在hashSet集合里如果存储对象时出现两个或多个相同的hash值,则会以单链的形式挂在同一个hash值下,所以数组的长度越长检索的速度越快,因为数据分开的比较散不会挤在一起。...如果数组太短的话存储的对象就会拥挤在同一个hash值下,这样检索起来自然会慢很多。 HashSet集合与数组集合检索速度对比: 数组集合检索: ? HashSet集合检索: ? 速度对比: ?...从以上实验可以看得出速度相差的不是一点点。 单链引用示意图: ? 数组存储示意图: ? HashSet集合添加方法: 代码示例: ? ?

    83520
    领券