`

摘抄一段关于HashSet的描述

    博客分类:
  • java
阅读更多
HashSet介绍:

1.只有类的实例对象要被采用哈希算法进行存储和检索时,这个类才需要被要求覆盖hashCode方法。即使程序暂时不会用到当前类的hashCode方法,但是为它提供一个hashCode方法也不会有什么不好,没准以后什么时候又用到这个方法了,所以,通常要求hashCode方法和equals方法一并被同事覆盖。


2.通常来说,一个类的两个实例对象用equals()方法比较的结果相等时,它们的哈希码必须相等,但反之则不成立,即equals方法比较结果不相等的对象可以有相同的哈希码,或者说哈希码相同的两个对象的equals方法比较的结果可以不等,例如:字符串“BB”和“Aa”的equals方法比较结果肯定不相等,但它们的hashCode方法返回值却相等。


3.当一个对象被存储进hashSet集合中以后,就不能够修改这个对象中的那些参与计算
哈希值的字段了,否则,对象修改后的哈希值与最初存储进hashSet集合中的哈希值就不同了
,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去hashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,从而造成内存泄露。
分享到:
评论

相关推荐

    HashSet的实现原理

    在Java编程中,HashSet是一种不允许存储重复元素的集合,它实现了Set接口。HashSet是通过HashMap来实现的,其底层使用HashMap来保存所有元素。这种实现方式让HashSet的操作非常简单高效,因为HashSet的大部分操作,...

    hashset类的使用

    在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素,其核心在于利用哈希算法快速定位元素存储位置,从而提高数据存取的效率。本篇将详细介绍Java语言...

    HashSet去重

    在Java编程语言中,`HashSet`是一种常用的集合类,属于`java.util`包的一部分。它不允许集合中有重复的元素,并且不保证集合中元素的顺序。`HashSet`之所以能够实现去重功能,主要依赖于其内部实现的哈希算法以及`...

    HashSet类的用法.pdf

    3. **允许一个null元素**:`HashSet`允许存在一个`null`值的元素。 #### 三、基本用法 1. **创建`HashSet`对象** ```java HashSet<String> hs = new HashSet(); ``` 2. **添加元素** 使用`add()`方法向`...

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

    HashSet是Java编程语言中的一种集合类,它是一个不包含重复元素的集合,其内部实现基于HashMap。HashSet不保证元素的顺序,允许存储null元素,并且是非同步的,这意味着在多线程环境下,如果需要保证线程安全,需要...

    1.HashSet和HashMap遍历.md

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

    HashMap与HashTable和HashSet的区别

    这意味着`HashSet`不允许`null`值,但允许一个`null`键(即一个`null`元素)。 **特点:** - **存储唯一性**:`HashSet`确保了存储元素的唯一性。 - **性能**:由于`HashSet`是基于`HashMap`实现的,因此其插入、...

    java HashSet 集合排序

    java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。

    HashSet工作原理_动力节点Java学院整理

    对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:

    hashSet底层去重原理.xmind

    hashSet底层去重原理

    集合类HashSet

    在Java编程语言中,集合类是用于存储一组...在黑马程序员_毕向东_Java基础视频教程中,你可能会更详细地学习到关于HashSet的实现原理和实战技巧。通过观看相关视频和实践操作,可以加深对HashSet的理解,提升编程能力。

    treemap treeset hashset hashmap 简要介绍

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

    HashSet和TreeSet.doc

    更正式地说,set 不包含满足e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。 HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的...

    c++用vector实现HashSet

    在C++编程中,HashSet是一种常用的集合数据结构,它提供了存储唯一对象的功能,类似于Java中的HashSet。虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。...

    HashSet:一个简单JavaScript设置

    已设置JavaScript中的简单哈希集创建一个新的HashSet var HashSet = require ( 'hashset' ) ;//Create an empty hash setvar hashset = new HashSet ( ) ;//Create a hash set an initialize it with a value 'a'var...

    排序之HashSet和TreeSet的区别

    例如,`CnfmSelectItem.java`可能是实现一个确认选择项的类,如果在这个场景下我们只需要确保选择项的唯一性,而不关心它们的顺序,那么使用`HashSet`存储这些选择项就足够了。而在`SetTest.java`中,如果我们要测试...

    java 利用HashSet删除学生

    在Java编程中,HashSet是一个非常重要的集合类,它继承自AbstractSet并实现了Set接口。HashSet不包含重复元素,也不保持元素的顺序。本篇将详细讲解如何利用Java的HashSet类来删除学生对象,以及HashSet的一些核心...

    Java基础加强_ArrayList_HashSet的比较及Hashcode分析

    在Java编程语言中,ArrayList和HashSet是两种常用的集合类,它们各自有其特性和应用场景。在实际开发中,理解它们的差异以及如何有效地利用它们是非常重要的。本篇将深入探讨ArrayList与HashSet的区别,并分析...

    Qt HashSet.h

    Qt4.8.5 Bug Patch File

    hashset源码

    源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556

Global site tag (gtag.js) - Google Analytics