散列表(hashmap)和容器(hashset)的区别

当你学习一门新的计算机语言时,你首先要问的是如何处理大量的数据。此主题通常在“数据结构”主题下讨论。如果你深入研究,你必须围绕诸如链表、队列、堆栈和二叉树等主题来研究其他许多数据结构。在Java中,这些结构是Java集合框架的一部分。集合只不过是一种数据结构,它涉及到多个数据元素的分组,Java集合框架标准化了处理这些对象组的方式。事实上,collections框架的设计是为了实现几个目标。...

当你学习一门新的计算机语言时,你首先要问的是如何处理大量的数据。此主题通常在“数据结构”主题下讨论。如果你深入研究,你必须围绕诸如链表、队列、堆栈和二叉树等主题来研究其他许多数据结构。在Java中,这些结构是Java集合框架的一部分。集合只不过是一种数据结构,它涉及到多个数据元素的分组,Java集合框架标准化了处理这些对象组的方式。事实上,collecti***框架的设计是为了实现几个目标。

整个集合框架是围绕一组标准接口设计的。这些接口提供了一些标准实现,如LinkedList、HashSet和TreeSet,您可以按原样使用它们。此外,如果您愿意,还可以实现自己的集合。但是,除了集合之外,框架还定义了几个映射接口和类。Java包含三种通用的映射实现——HashMap、TreeMap和LinkedHashMap——它们存储键/值对。虽然从技术上讲,地图不是收藏品,但它们与收藏品完全集成。事实上,地图关注对象之间的关联组。本文总结了HashMap和HashSet之间的主要区别。

 

散列表(hashmap)和容器(hashset)的区别

什么是哈希图(a hashmap)?

HashMap是Map接口最常用的实现,它提供了元素无序的基本键/值映射。它使用一个称为哈希码的特殊值,而不是缓慢地搜索密钥。哈希代码是一种获取相关对象中的信息并将其转换为该对象的“相对唯一”int的方法。它只是根据哈希原理工作,这意味着它使用哈希函数来映射标识值。就像Vector和Stack在ArrayList和LinkedList中有替换一样,Hashtable在HashMap中也有替换。它扩展了AbstractMap,使用内部哈希表表示来实现Map接口。与其他通用实现类似,HashMap支持Map的可选方法,允许空值,并且不同步。

什么是哈希集(a hashset)?

HashSet是实现Set接口的Java集合框架的成员之一,它由一个HashMap实例支持。顾名思义,它是由哈希表实现的,哈希表是一个数组,元素存储在从其内容派生的位置。与映射不同,Set是一个具有完全相同接口的集合,因此没有任何额外的功能,就像两个不同的列表一样。HashSet使用专门为快速查找而设计的哈希函数。它是唯一对象的无序集合,不能存储重复的值。HashSet扩展了实现Set接口的AbstractSet类。但是,HashSet除了其超类和接口提供的方法外,没有定义任何其他方法。

散列表(hashmap)和容器(hashset)的区别

 

hashmap和hashset的区别

  1. 基本

HashMap是Map接口最常用的实现,它提供了元素无序的基本键/值映射。它只是根据哈希原理工作,这意味着它使用哈希函数来映射标识值。另一方面,HashSet是实现Set接口的Java集合框架的成员之一,它由一个哈希表支持,而哈希表实际上是一个HashMap实例。简单地说,HashMap实现Map接口,而HashSet实现Set接口。

  1. 功能

HashSet创建一个使用哈希表进行存储的集合。哈希表使用名为哈希的方法存储信息。HashSet使用专门为快速查找而设计的哈希函数来存储元素或值。HashSet的大部分功能是通过AbstractCollection和AbstractSet超类提供的,HashSet与TreeSet共享这些超类。HashMap扩展了AbstractMap,以使用内部哈希表表示实现Map接口。这两个类都不同步,这意味着它们不适合线程安全操作。

  1. 重复值

因为Map不支持重复键,所以HashMap不允许重复键,但允许有重复值。这意味着HashMap中可以存在重复的值,但可以使用collection作为某个键的值。每个键在HashMap中必须是唯一的,并且单个键的值不能超过1。另一方面,HashSet不能仅仅通过定义一个集合就拥有重复的元素,这意味着不能在HashSet中存储重复的值。HashMap只允许一个null键,但允许任意数量的null值,而HashSet只允许一个null值。

  1. 储存机构

HashMap的工作原理是hashing,这意味着它使用一个hash函数在内部映射标识值,并使用hashing算法来方便检索。真正的哈希机制在应用于同一对象时总是返回相同的hashCode()。另一方面,HashSet在内部使用HashMap作为备份数据结构来添加或存储对象。这意味着在创建HashSet的对象时,它将创建HashMap的对象。

hashmap与hashset:比较图

散列表(hashmap)和容器(hashset)的区别

 

总结 - hashmap的(of hashmap) vs. 容器(hashset)

虽然HashMap和HashSet都不是同步的,这意味着它们不适合线程安全的操作,而且它们是完全不同的构造,但它们为基本操作(如添加、,删除元素等。虽然HashMap是存储键/值对的Map接口的通用实现,但HashSet是Set接口的实现。HashSet确实使用HashMap来支持它的实现。不过,HashMap使用哈希原理并使用它快速查找密钥。

  • 发表于 2021-06-25 21:32
  • 阅读 ( 333 )
  • 分类:IT

你可能感兴趣的文章

单分散(monodisperse)和多分散聚合物(polydisperse polymers)的区别

单分散聚合物和多分散聚合物的关键区别在于单分散聚合物具有精确和离散的分子量。但是,多分散聚合物具有一系列分子量的组分。 分散是一个体系,其中一个相的粒子分散在另一个相的介质中。因此,色散是一个两相系...

  • 发布于 2020-09-27 05:32
  • 阅读 ( 1080 )

散列表(hashmap)和树状图(treemap)的区别

关键区别–hashmap与treemap 在编程中,有各种机制来收集数据。集合是存储数据的一种方法。编程语言,如Java使用集合。它是一个包含类和接口的框架,用于存储和操作一组数据元素。在普通数组中,有固定数量的元素要存储...

  • 发布于 2020-10-02 05:06
  • 阅读 ( 353 )

等于(equals)和java中的hashcode(hashcode in java)的区别

...等。打印s1和s2的hashCode得到相同的值。hashCode方法可用于HashMap等集合。 等于(equals)和java中的hashcode(hashcode in java)的区别 等于Java中的hashCode equals是Java中的一个方法,它的作用类似于==运算符,后者用于测试对象标识而...

  • 发布于 2020-10-19 00:40
  • 阅读 ( 200 )

树集(treeset)和容器(hashset)的区别

关键区别–treeset与hashset 大多数编程语言都支持数组。它是一种数据结构,用于存储同一数据类型的多个元素。如果有为六个元素声明的数组,则它不能用于存储十个元素。因此,数组不是动态的,一旦声明数组,就不能更...

  • 发布于 2020-10-19 06:21
  • 阅读 ( 227 )

列表(list)和设置(set)的区别

...t。NavigableSet提供了导航方法,如lower、floor、天花板等。 HashSet、LinkedHashSet和TreeSet是一些实现Set接口的类。HashSet实现Set接口。它不保持**的顺序。如果值以a,x,b的形式**,它可能存储为,x,a,b。LinkedSet保持**顺序。如果元素...

  • 发布于 2020-10-19 09:09
  • 阅读 ( 207 )

电感(inductance)和电容(capacitance)的区别

...一个装置的电容量是用来测量它保持电荷的能力。基本电容器由两层金属薄膜和夹在它们之间的介电材料组成。当一个恒定的电压施加在两个金属板上时,相反的电荷就会储存在它们上面。即使断开电压,这些电荷仍将存在。此...

  • 发布于 2020-10-25 04:40
  • 阅读 ( 374 )

数组表(arraylist)和矢量(vector)的区别

...量增量,是矢量存储管理的特征。它实现了四个接口:*列表*随机访问*可克隆*可串行化接口 ArrayList和vectors一样,也实现了四个接口。同样,和向量一样,它的大小在运行时也会发生变化。此外,它还有一个名为capacity的字段,...

  • 发布于 2021-06-23 18:41
  • 阅读 ( 240 )

散列表(hashmap)和哈希表(hashtable)的区别

...类提供map接口的实现。 Java平台包含三个通用的Map实现:HashMap、TreeMap和LinkedHashMap。HashMap和Hashtable是Java中用于在哈希表中存储键/值对的两个集合。Hashtable是一个同步映射,HashMap是一个非同步映射。不过,如果需要使用同步映射...

  • 发布于 2021-06-25 20:14
  • 阅读 ( 251 )

散列表(hashmap)和linkedhashmap公司(linkedhashmap)的区别

HashMap和LinkedHashMap是Java平台中最常见和通用的两种Map实现。它们基本上是基于散列的类,彼此非常相似,用于创建映射。Map接口是最后一个主要的Collecti***框架接口,它定义了一组键到值关联(其中键是唯一的)所支持的操作。...

  • 发布于 2021-06-25 20:26
  • 阅读 ( 224 )

散列表(hashmap)和容器(hashset)的区别

...了几个映射接口和类。Java包含三种通用的映射实现——HashMap、TreeMap和LinkedHashMap——它们存储键/值对。虽然从技术上讲,地图不是收藏品,但它们与收藏品完全集成。事实上,地图关注对象之间的关联组。本文总结了HashMap和Has...

  • 发布于 2021-06-25 21:32
  • 阅读 ( 333 )
feov5770
feov5770

0 篇文章

相关推荐