`
程硕tkggddm
  • 浏览: 19015 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HashSet与HashMap的区别

 
阅读更多

Hash Set和 HashMap区别

HashSet:

  HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在

HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有

储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现:

 public boolean add(Object obj)方法用在Set添加元素时,如果元素值重复时返回 "false",如果添加成功则返回"true"

HashMap:

  HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许出现重复的键(Key)。Map接口有两个基本的实现

TreeMap和HashMap。TreeMap保存了对象的排列次序,而HashMap不能。HashMap可以有空的键值对(Key(null)-Value(null))

HashMap是非线程安全的(非Synchronize),要想实现线程安全,那么需要调用collections类的静态方法synchronizeMap()实现。

public Object put(Object Key,Object value)方法用来将元素添加到map中。

HashSet与HashMap的区别:

HashMap HashSet
实现了Map接口 实现Set接口
存储键值对 仅存储对象
调用put()向map中添加元素 调用add()方法向Set中添加元素
HashMap使用键(Key)计算Hashcode

HashSet使用成员对象来计算hashcode值,

对于两个对象来说hashcode可能相同,

所以equals()方法用来判断对象的相等性,

如果两个对象不同的话,那么返回false

HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 HashSet较HashMap来说比较慢

 

分享到:
评论

相关推荐

    Java中HashSet和HashMap的区别_动力节点Java学院整理

    Java中HashSet和HashMap的区别 Java中HashSet和HashMap是两个常用的集合类,它们都属于Java集合框架(Java Collection Framework),但是它们有着不同的实现和应用场景。 什么是HashSet? HashSet实现了Set接口,...

    1.HashSet和HashMap遍历.md

    自己写的例子,关于HashSet遍历和HashMap遍历的. 感谢大家参考

    HashMap与HashTable和HashSet的区别

    ### HashMap与HashTable和HashSet的区别 #### 一、概述 在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程...

    treemap treeset hashset hashmap 简要介绍

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...

    HashSet和HashMap的区别_动力节点Java学院整理

    什么是HashSet? HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以...

    HashMap底层实现原理HashMap与HashTable区别HashMap与HashSet区别.docx

    与HashSet的区别在于,HashSet是基于HashMap实现的集合类,用于存储唯一对象。HashSet中的元素没有顺序,添加元素时,HashSet会将元素转化为键放入HashMap中。因此,HashSet的插入和查找速度与HashMap相当,但由于...

    ArrayList-HashSet-HashMap.zip_ABC_arraylist_hashmap_学生 信息 txt

    编写一个查询类,输入学生学号,若该生在数据文件(test.txt)中存在,在JTextArea中显示该生信息 若该生在数据文件(test.txt)中不存在,显示”查无此人”,可反复查找.在输出中,能显示该生的总成绩和平均成绩,将显示结果...

    Java集合框架源码剖析:HashSet 和 HashMap

     之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。  HashMap实现了Map...

    HashSet的实现原理

    关于HashSet与HashMap的区别,在底层数据结构上,二者都基于哈希表,但存储的方式不同。HashMap存储的是键值对(key-value pairs),键不唯一,值可以重复。而HashSet存储的是唯一元素,可以看作是键的集合,只是不...

    java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较

    因此,HashSet判断元素是否重复的方式与HashMap类似:首先计算元素的哈希值,然后通过equals()方法检查是否存在相同的元素。 **TreeMap** TreeMap是一个有序的键值对存储结构,它根据键的自然顺序或者自定义比较器...

    HashMap 和 HashSet的区别

    与HashSet一样,HashMap依赖于`hashCode()`和`equals()`方法来确定键的唯一性。然而,HashMap不仅关心键的唯一性,还需要根据键的`hashCode()`快速定位到对应的值。由于可能存在哈希冲突,HashMap使用链表或红黑树来...

    Java HashMap类详解

    HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于 HashMap 而言,系统 key-value 当成一个整体进行处理,系统总是...

    hashmap面试题_hashmap_

    4. HashMap与Hashtable的区别? 答:HashMap非线程安全,而Hashtable是线程安全的;HashMap允许null键值,Hashtable不允;HashMap迭代器在修改时不会抛出ConcurrentModificationException,而Hashtable会。 5. ...

    JavaHashSet和HashMap源码剖析编程开发技术

    在Java编程语言中,HashSet和HashMap是两种非常重要的集合类,它们都位于`java.util`包下,分别用于存储不重复元素的集合和键值对的数据结构。本篇技术文档将深入剖析这两类数据结构的源码,帮助开发者理解其内部...

    Data-Structure:简单的数据结构,包括HashSet,HashMap,Heap,Red-Black Tree等

    在给定的标题和描述中,提到了几种关键的数据结构:HashSet、HashMap、Heap(堆)以及Red-Black Tree(红黑树)。下面将对这些数据结构及其在C++中的实现进行详细解释。 1. **HashSet**: HashSet是基于哈希表实现...

    深入arraylist,linkedlist,hashmap,hashset源码(2012/3/18)

    `add()`、`contains()`和`remove()`方法是HashSet的关键,它们的行为与HashMap的相应方法紧密相关。 至于"Hashmap同步问题",在多线程环境下,如果不进行适当的同步控制,HashMap不是线程安全的。这意味着在并发...

    HashSet详解和使用示例_动力节点Java学院整理

    ### HashSet与Map的关系 HashSet并不是直接继承自Map,而是通过内部的HashMap实现Set的功能。HashSet通过调用HashMap的方法来完成添加、删除、查找等操作。HashMap提供了快速定位元素的能力,使得HashSet具有高效的...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    与`HashMap`类似,它也是基于哈希表实现的,但不允许使用`null`键或值。 - **特点**: - **线程安全**:由于它内部使用了`synchronized`关键字,所以可以直接在多线程环境中使用。 - **不支持null**:既不允许`...

Global site tag (gtag.js) - Google Analytics