# 哈希表

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。

当要处理有限数据时,优先考虑数组,因为使用下标来遍历和查找很方便。

哈希表中的键值和关键字可以同时为字符类型

面对多个需要处理的数组或字符串数组时,可以使用两个哈希表来实现算法,一个哈希表用来记录对应的属性(比如字符的最小出现频率),然后另一个哈希表用来统计最后的结果。同时,当需要两个数组时,可以考虑用一个二维数组来实现。

当要分析的数据太大,没有限制时,就不能使用数组了,考虑使用集合Set。

HashSet集合

  • 底层是哈希表
  • 不能保证存储和取出的顺序完全一致
  • 没有索引,不能用for循环遍历
  • Set集合,元素唯一

Map使用场景

  • 如果元素很少,而哈希值太大则会造成内存空间的浪费。
  • 需要同时记录key的下标时,因为Set没有索引。

哈希表可以看作是起一个记录的作用,他来记录某个值出现的次数,但如果要考虑去重,哈希表不是一个好选择。因为哈希表常常只关注结果,而不关注结果是怎么来的。比如有两种情况可以得到-1,而且这两种情况用到了重复的数据,但哈希表只会统计-1得到了两次,而不会去考虑用到了重复的数据。