`
racingbird
  • 浏览: 23699 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用散列数据结构注意点

 
阅读更多

 

Goundhog自动继承基类Object,所以这里使用Object的hashCode()方法生成散列码,

而它默认是使用对象的地址计算散列码。所以查找不到。

 

可能你会认为,只需编写恰当的hashCode()方法的覆盖版本即可。但是它

任然无法正常运行,除非你同时覆盖equals()方法,它也是Object的一部分。

HashMap使用equals()判断当前键是否与表中存在的键相同。

正确的equals()方法必须满足下列5个条件:

1 自反性 对任意x x.equals(x) 一定返回true

2 对称性

3 传递性

4 一致性 对任意x和y,如果对象中用于等价比较的信息没有改变,

那么无论调用x.equals(y)多少次,返回的结果保持一致。

5 对任何不是null的x, x.equals(null)一定返回false;

 

再次强调,默认的Object.equals()只是比较对象的地址,所以一个Goundhog(3)

并不等于另一个Goundhog(3)。因此,如果要使用自己的类作为HashMap的类,

必须同时重载hashCode()和equals().

分享到:
评论

相关推荐

    数据结构7.4散列查找技术

    散列查找技术是一种高效的数据检索方式,它通过一个特定的函数将给定的关键码转换成存储地址,即散列地址,从而直接访问数据,避免了传统的逐个比较查找。散列查找的核心在于散列函数的设计和冲突处理方法。 散列...

    郝斌 数据结构源代码和数据结构 大纲

    数据结构是计算机科学中的核心课程,它探讨了如何有效地存储、组织和操作数据。在编程领域,理解数据结构是至关重要的,因为它们直接影响到算法的效率和程序的性能。郝斌老师的《数据结构》课程因其深入浅出的讲解,...

    中南大学943数据结构历年考研真题汇编及部分参考答案

    首先,数据结构主要分为线性结构、树形结构、图状结构和散列结构四大类。线性结构如数组和链表,它们是最基本的数据组织方式,常用于简单的数据存储和遍历。树形结构如二叉树、平衡树(AVL树、红黑树),广泛应用于...

    数据结构和算法 java

    在Java中实现数据结构和算法,需要注意以下几点: 1. 内存管理:Java的自动内存管理(垃圾回收)简化了内存分配,但仍然需要合理设计对象引用,防止内存泄漏。 2. 性能优化:虽然Java提供了丰富的库,但过度依赖可能...

    《数据结构》考研真题1800题集锦

    标题《数据结构》考研真题1800题集锦中所蕴含的知识点主要围绕数据结构这一核心概念展开。数据结构是计算机科学与技术专业中一门重要的基础课程,它主要研究数据元素以及它们之间的逻辑关系和存储结构,其中包含的...

    数据结构实验全部代码

    此外,我们还会涉及散列表(哈希表),这是一种通过散列函数将关键字映射到数组索引的数据结构。散列表提供了快速的查找、插入和删除操作,时间复杂度通常为O(1)。但需要注意处理哈希冲突的方法,如开放寻址法和链...

    数据结构演示c_demo

    此外,散列表(哈希表)是一种提供快速查找的数据结构,通过散列函数将键映射到数组索引。C语言实现散列表时,需要注意解决冲突的方法,如开放寻址法和链地址法。 在"数据结构演示c_demo"中,你可能会看到这些数据...

    数据结构C++(殷人昆)代码.rar

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于快速访问和处理。C++是一种强大的编程语言,特别适合实现这些抽象数据类型的算法。"数据结构C++(殷人昆)代码"是殷人昆教授...

    数据结构C++

    这本书可能是系统学习数据结构和C++结合使用的参考书,适合作为计算机科学与技术专业的大学生或者对C++有深入学习需求的读者。通过学习这本书,读者不仅可以掌握数据结构的基本理论和方法,还可以学会在C++中运用...

    郝斌数据结构代码

    "郝斌数据结构代码"是一个学习资源,可能包含了郝斌老师对于各种经典数据结构实现的代码示例,这些代码通常使用常见的编程语言如C、C++或Java编写。 以下是这个资源可能涵盖的一些关键数据结构及其重要知识点: 1....

    数据结构 电子书 免费下载

    "ebookdown.net说明.txt"可能是提供关于如何下载、阅读或使用电子书的指导文件,可能包含版权信息、阅读软件推荐或者下载链接的注意事项。 总的来说,这本免费的《数据结构》电子书对学习者来说是一份宝贵的资源,...

    数据结构1500题

    数据结构是计算机科学中的核心课程之一,它研究如何在计算机中高效地组织和管理...建议按照数据结构的不同类别分别练习,逐步掌握各种数据结构的特性和使用场景,同时注意理解和优化解题的算法,培养良好的编程习惯。

    数据结构教材例题源代码

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中有效地存储和处理数据。本资料包"数据结构教材例题源代码"包含了C语言实现的数据结构教学示例,将原本基于类C的代码改写成了纯粹的C语言版本。这对于学习...

    2024年统招“专升本”考前模拟测试卷《数据结构》课程数据结构数据结构三.rar

    数据结构是计算机科学中的核心课程,它探讨了...在做模拟卷时,要注意题目所考察的点,如对数据结构特性的理解、算法实现的正确性和效率,以及问题解决的逻辑性。通过不断地练习和总结,才能在考试中取得优异的成绩。

    数据结构代码实现(C语言)

    数据结构是计算机科学中的核心概念,它涉及到如何有效地组织和管理数据,以便于高效地进行存储、检索和处理。在编程中,理解并熟练运用数据结构对于提升算法效率至关重要。本压缩包“数据结构代码实现(C语言)”...

    数据结构课件(徐孝凯)

    徐孝凯教授的C语言版数据结构课件不仅涵盖了以上知识点,还可能深入讲解这些概念的实际应用和C语言实现细节,比如动态内存管理、指针操作以及数据结构的优化策略。通过学习这套课件,学生不仅可以掌握数据结构的基本...

    2024年统招“专升本”考前模拟测试卷《数据结构》课程数据结构数据结构十一.rar

    数据结构主要分为四大类:线性结构、树形结构、图形结构和散列结构。每种结构都有其特定的应用场景和操作效率。 1. **线性结构**:如数组和链表,是最基础的数据结构。数组提供了随机访问的优势,但插入和删除元素...

    数据结构的c++伪码实现

    在C++中实现这些数据结构和算法时,通常会使用类和对象来封装数据和操作。通过编写伪码,可以清晰地展示逻辑流程,方便理解和实现。本教程的"数据结构的C++伪码实现"将逐步引导读者从概念到实践,深入理解数据结构的...

    数据结构(c语言)严蔚敏版课后习题

    数据结构是计算机科学中的核心课程之一,主要研究数据在计算机中的组织、存储和管理方式。C语言因其灵活性和效率,常被用于实现数据结构。严蔚敏教授的《数据结构》是一本经典教材,深入浅出地介绍了各种数据结构...

    数据结构C语言代码实现

    数据结构是计算机科学中的核心概念,它涉及到如何高效地存储和组织数据,以便进行快速的检索、修改和删除操作。C语言是一种强大的编程语言,特别适合实现底层的数据处理和算法。"数据结构C语言代码实现"这个主题,是...

Global site tag (gtag.js) - Google Analytics