`
xiaoshao
  • 浏览: 53192 次
社区版块
存档分类
最新评论

自己创建类作为HashMap或者HashTable的键值或者Value值时需要注意点

 
阅读更多

在HashMap和HashTable中利用键值查找value的方法是,首先对键值求hashCode,然后根据键值的hashCode进行快速匹配。

基类Object的hashCode方法是根据类的地址求出hashCode,equals方法也是简单的比较地址。

基于以上的机制我们首先要对类的hashCode方法进行覆盖,同时还要对equals方法进行覆盖。因为在比较两个键值的时候,要使用equals方法。

分享到:
评论

相关推荐

    hashmap与hashtable区别

    - 如果希望拥有更高的性能并能够自己管理线程安全问题,或者需要支持键或值为null的情况,则应该使用`HashMap`。 总的来说,`HashMap`和`Hashtable`各有优势,开发者应根据具体的应用场景和个人需求来选择最适合的...

    hashMap和hashTable的区别

    如果需要线程安全,或者希望使用早期的 Java 版本中可用的集合类,可以选择 `HashTable`。然而,在现代 Java 开发实践中,推荐使用 `ConcurrentHashMap` 来代替 `HashTable`,因为它提供了更好的性能和更丰富的功能...

    HashMap与HashTable和HashSet的区别

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

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    Java集合专题总结:HashMap和HashTable源码学习和面试总结 本文总结了Java集合专题中的HashMap和HashTable,涵盖了它们的源码学习和面试总结。HashMap是一种基于哈希表的集合类,它的存储结构是一个数组,每个元素...

    HashMap与HashTable的区别(含源码分析)

    在Java编程语言中,`HashMap`和`HashTable`都是实现键值对存储的数据结构,但它们之间存在一些显著的区别,这些区别主要体现在线程安全性、性能、null值处理以及一些方法特性上。以下是对这两个类的详细分析: 1. ...

    java程序员面试题

    最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概...

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    `HashTable`是`Dictionary`类的子类,是一个键值对(Key-Value)存储结构,不允许null键和值,且是线程安全的。查找、插入和删除的速度较快,但不能保证迭代的顺序,因为它是无序的。 5. **HashMap类**: `...

    HashMap和HashTable区别共2页.pdf.zi

    在Java编程语言中,`HashMap`和`HashTable`是两种常用的集合类,它们都是用于存储键值对的数据结构。这两个类都实现了`Map`接口,但它们之间存在一些显著的区别,这些差异主要体现在线程安全性、null值处理、迭代...

    Hashtable和HashMap区别

    相比之下,`HashMap`是非线程安全的,它没有同步任何方法,因此在多线程环境中使用时,可能需要显式地添加同步控制,例如通过`Collections.synchronizedMap()`方法来创建一个线程安全的`Map`。 #### 3. 允许null...

    HashMap和Hashtable的区别

    在Java编程语言中,`HashMap`和`Hashtable`都是实现`Map`接口的容器,用于存储键值对数据。它们的主要区别在于线程安全性、继承结构、提供的接口、对`null`值的支持、容量初始化与扩容策略以及哈希计算与冲突解决...

    浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别

    - `Hashtable` 不允许null作为键(key)或值(value),而`HashMap` 允许null作为键和值。这在某些情况下提供了更大的灵活性。 4. **其他差异**: - `Hashtable` 不允许使用包含空(null)键值对,而`HashMap` ...

    Java 实例 - 遍历 HashTable 的键值源代码+详细教程.zip

    这个压缩包“Java 实例 - 遍历 HashTable 的键值源代码+详细教程.zip”包含了关于如何遍历`HashTable`的详细教程和源代码,对于学习Java的初学者或者需要深入了解`HashTable`操作的开发者来说,这是一个非常宝贵的...

    java面试题——详解HashMap和Hashtable 的区别

    HashMap 和 Hashtable 是 Java 中两种常用的哈希表数据结构,它们都是用来存储键值对的数据结构,但它们在设计和实现上有显著的区别。以下是对这两者差异的详细解释: 1. **线程安全性**: - `Hashtable` 是线程...

    HashMap底层原理.pdf

    首先,HashMap是基于哈希表的Map接口非同步实现,它允许使用null值和null键,这意味着HashMap在设计时没有考虑多线程环境下的线程安全问题。在单线程环境下,HashMap提供了优秀的性能和访问速度。而如果需要线程安全...

    浅析Java中Map与HashMap,Hashtable,HashSet的区别

    需要注意的是,使用`get()`方法返回null时,需要通过`containsKey()`来确认键是否存在,因为null值的存在可能造成误判。 在遍历方式上,两者都支持迭代器`Iterator`,但`Hashtable`由于历史原因还保留了旧的枚举器`...

    Java容器HashMap与HashTable详解

    HashMap和HashTable是Java中两种重要的数据结构,它们都是用于存储键值对的数据容器,但两者在设计和使用上有显著的差异。 HashMap是Java集合框架的一部分,它继承自AbstractMap并实现了Map、Cloneable和...

    Java中Hashtable类与HashMap类的区别详解

    Java中的`Hashtable`和`HashMap`都是用于存储键值对的数据结构,它们都实现了`Map`接口,但在一些关键特性上有所不同。以下是这两者的主要区别: 1. **线程安全性**: - `Hashtable`是线程安全的,这意味着在多...

    Java中HashMap和Hashtable的区别浅析

    在Java编程语言中,HashMap和Hashtable都是用于存储键值对的数据结构,它们都实现了Map接口。然而,两者之间存在一些显著的区别,这些差异主要体现在线程安全性、空值支持、继承结构以及方法实现等方面。以下是关于...

    Java中HashMap和Hashtable及HashSet的区别

    在处理可变对象时,特别是作为`HashSet`或`HashMap`的元素时,需要注意对象状态的变化可能会导致`equals()`返回true,从而引起集合内部结构的混乱。因此,建议使用不可变对象或者在对象状态改变时正确处理它们在集合...

    Hashtable的使用

    在Java编程语言中,`Hashtable`是一个基于键值对(key-value pairs)的数据结构,它属于同步的、线程安全的容器类。`Hashtable`是`Dictionary`类的一个子类,它不支持`null`键或`null`值。这个类实现了`Map`接口,...

Global site tag (gtag.js) - Google Analytics