如何从入门到精通,一步步掌握HashMap的使用技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计6802个文字,预计阅读时间需要28分钟。
在HashMap家族中迷失的年龄。
文本共957字,预计阅读18分钟。
什么是Hash?即散列函数,或称为哈希函数。它可以将任意长度的输入(如字符串)通过算法转换成固定长度的输出(散列值)。散列函数可以任意长度的输入通过某种算法转换成一个固定长度的输出,通常是二进制数字。
谨以此文献给在HashMap家族中迷失的岁月。。。。。
本文有6957词,预计阅读18分钟。
什么是Hash
Hash,即散列函数,或者叫哈希函数。它可以任意长度的输入通过算法转换成一个定长的输出,这个输出就是散列值,或者叫哈希值。在后文中称为Hash值。
因为是无穷对应有限,则必有多个输入对应相同的输出,即散列冲突,或叫哈希冲突。
哈希算法有以下特点:
- 从输出无法推导出输入。
- 散列冲突的概率要尽可能小。
- 数据敏感,对输入的简单修改会导致输出的巨大差异。
为什么不能使用基本数据类型
HashMap存储元素首先调用hashCode()方法,计算其Hash值。若相同,则认为是相同的数据,不存储。如果Hash值不同,则再调用其equals()方法进行比较,若返回true则认为是相同对象,不存储。若返回false则存储。
因此如果使用基本数据类型,则无法调用hashCode()或equals()方法。而包装类有这些方法。
其次,而在HashMap设计中,使用了泛型约束key和value的类型,即HashMap<K, V>;而泛型在Java中必须是Object类型的。而基本数据类型不是Object类型,因此不可以作为键值。
本文共计6802个文字,预计阅读时间需要28分钟。
在HashMap家族中迷失的年龄。
文本共957字,预计阅读18分钟。
什么是Hash?即散列函数,或称为哈希函数。它可以将任意长度的输入(如字符串)通过算法转换成固定长度的输出(散列值)。散列函数可以任意长度的输入通过某种算法转换成一个固定长度的输出,通常是二进制数字。
谨以此文献给在HashMap家族中迷失的岁月。。。。。
本文有6957词,预计阅读18分钟。
什么是Hash
Hash,即散列函数,或者叫哈希函数。它可以任意长度的输入通过算法转换成一个定长的输出,这个输出就是散列值,或者叫哈希值。在后文中称为Hash值。
因为是无穷对应有限,则必有多个输入对应相同的输出,即散列冲突,或叫哈希冲突。
哈希算法有以下特点:
- 从输出无法推导出输入。
- 散列冲突的概率要尽可能小。
- 数据敏感,对输入的简单修改会导致输出的巨大差异。
为什么不能使用基本数据类型
HashMap存储元素首先调用hashCode()方法,计算其Hash值。若相同,则认为是相同的数据,不存储。如果Hash值不同,则再调用其equals()方法进行比较,若返回true则认为是相同对象,不存储。若返回false则存储。
因此如果使用基本数据类型,则无法调用hashCode()或equals()方法。而包装类有这些方法。
其次,而在HashMap设计中,使用了泛型约束key和value的类型,即HashMap<K, V>;而泛型在Java中必须是Object类型的。而基本数据类型不是Object类型,因此不可以作为键值。

