Java中 HashMap 和 HashSet 的区别
HashMap vs HashSet 是任何核心 Java 面试中最常被问到的问题,直到他们不涉及集合框架和多线程面试,集合才算完成,而没有涵盖 HashSet 和 HashMap。
HashMap
和 HashSet
都是集合框架的一部分,它允许我们使用对象集合。 集合框架有自己的接口和实现类。 基本上,集合分为集合接口、列表和队列接口。
所有这些接口都有自己的属性,除了它们从集合中获得的属性之外,例如 Set 允许对象的集合但禁止重复值,List 允许重复和索引。 Queue 使用 FCFS 算法。
首先,我们看一下 HashMap 和 HashSet 是什么,然后将介绍 HashSet 和 HashMap 之间的区别
Java 中的 HashSet 是什么?
HashSet
是 Set Interface 的实现,它不允许重复值 集合框架中的所有方法默认情况下也在 Set Interface 中,但是当我们谈论 Hash set 时,主要的是将要存储在 HashSet 中的对象必须 覆盖 equals()
和 hashCode()
方法,这样我们就可以检查是否相等,并且没有重复的值存储在我们的集合中。
如果我们创建了自己的对象,我们需要以这样一种方式实现 hashCode()
和 equal()
,以便在存储在集合中时能够正确比较对象,这样就不会存储重复的对象,如果我们不必覆盖它的话 方法对象将采用此方法的默认实现。
public boolean add(Object o)
方法用于在集合中添加一个元素,如果它在 HashSet 的情况下是重复值,则返回 false 否则如果添加成功则返回 true。
Java 中的 HashMap 是什么?
HashMap
是 Map 接口的实现,它将键映射到值。 Map 上不允许有重复的键。 基本上, Map 接口有两个实现类 HashMap
和 TreeMap
,主要区别在于 TreeMap 维护对象的顺序,但 HashMap 不会。HashMap 允许空值和空键。
HashMap 不是同步的,但是集合框架提供了一些方法,以便在多个线程要访问我们的 hashmap 并且一个线程在结构上更改我们的 map 时我们可以使它们同步。
public Object put(Object key, Object value)
方法用于向 Map 添加元素。
大家可以在我我们的文章 Java 中HashMpa工作原理 和 Java 中的 HashMap 和 Hashtable 有什么区别? 中阅读更多关于 HashMap 的内容
Java中 HashSet 和 HashMap 的区别
以下是 HashMap 和 HashSet 之间的一些区别:
HashMap | HashSet |
---|---|
HashMap是Map接口的一个实现 | HashSet 是 Set 接口的一个实现 |
HashMap 以键值对的形式存储数据 | HashSet 只存储对象 |
put方法用于在map中添加元素 | Add方法用于添加元素为Set |
在hash map中,hashcode 值是使用key对象计算的 | 这里成员对象用于计算两个对象可以相同的hashcode值,所以使用equal()方法检查是否相等,如果它返回false,这意味着两个对象是不同的。 |
HashMap 比 HashSet 快,因为使用唯一键访问对象 | HashSet 比 Hashmap 慢 |
如果各位需要 Java 中 HashSet 和 HashMap 之间的任何其他区别,请告诉我,我将在此处添加它们。
相关文章
在 Java 中获取文件大小
发布时间:2023/05/01 浏览次数:139 分类:Java
-
Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。
Java 中的文件分隔符
发布时间:2023/05/01 浏览次数:108 分类:Java
-
本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。
Java 中的文件过滤器
发布时间:2023/05/01 浏览次数:193 分类:Java
-
本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。
Java 获取 ISO 8601 格式的当前时间戳
发布时间:2023/05/01 浏览次数:132 分类:Java
-
本篇文章介绍了 ISO 8601 日期格式、其重要性及其在 Java 中的使用。 它还列出了一些优点来强调为什么应该使用 ISO 格式来表示日期。
在 Java 中获取数组的子集
发布时间:2023/05/01 浏览次数:142 分类:Java
-
本篇文章介绍了几种在 Java 中获取数组子集的方法。使用 Arrays.copyOf() 方法获取数组的子集 使用 Arrays.copyOfRange() 方法获取数组的子集
用 Java 填充二维数组
发布时间:2023/05/01 浏览次数:110 分类:Java
-
二维数组是基于表结构的,即行和列,填充二维数组不能通过简单的添加到数组操作来完成。 本篇文章介绍如何在 Java 中填充二维数组。
计算 Java 数组中的重复元素
发布时间:2023/05/01 浏览次数:202 分类:Java
-
本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。
Java 中 List 和 Arraylist 的区别
发布时间:2023/05/01 浏览次数:90 分类:Java
-
表示为单个单元的一组单个对象称为集合。 在 Java 中,Collection 是一个具有多个已定义接口和类的框架,用于将一组对象表示为一个单元。 它允许我们操纵