多大数量级会出现哈希碰撞

简介: 写作目的今天在网上看到一个有意思的问题是多大的数据量会出现哈希碰撞?我当时的想法是2的32次方,因此hascode是init类型的,哈哈。还是可以写个demo实验一下的。真实答案是10W5K左右的量级会出现哈希碰撞

实验


实验代码


package HashCcollision;
import java.util.HashSet;
import java.util.Set;
/**
 * @author chaird
 * @create 2022-07-31 22:08
 */
public class App {![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/46fe066444bd429b8762056191dade0c.png)
  public static void main(String[] args) {
    Set<Integer> set = new HashSet<>();
    int hashcode = 0;
    // 10w
    int size = 11 * 10000;
    System.out.println("init :" + size);
    for (int i = 0; i < size; i++) {
      hashcode = new Object().hashCode();
      if (set.contains(hashcode)) {
        System.out.println("第" + i + "次出现了 哈希冲突");
      } else {
        set.add(hashcode);
      }
    }
      System.out.println("finish :" + set.size());
  }
}


实验结果


如下图所示, 当数量量达到10W~11W的时候会出现哈希碰撞


6.png


结论


10W5K左右的量级会出现哈希碰撞

目录
相关文章
|
23天前
|
算法
HyperLogLog的缺点有哪些呢
【10月更文挑战第19天】HyperLogLog的缺点有哪些呢
13 1
|
存储 人工智能 算法
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
83 0
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
|
算法 测试技术 C++
C++算法:让数组不相等的最小总代价
C++算法:让数组不相等的最小总代价
|
存储 小程序 编译器
数据在内存中存储的现象
数据在内存中存储的现象
111 0
|
SQL 存储 Oracle
前缀索引,在性能和空间中寻找平衡
前缀索引,在性能和空间中寻找平衡
|
存储 NoSQL 测试技术
rediskey值内存消耗以及性能影响
rediskey值内存消耗以及性能影响
193 0
|
机器学习/深度学习 存储 算法
「错位算法时空」,让你彻底学会「时间」与「空间」复杂度
「错位算法时空」,让你彻底学会「时间」与「空间」复杂度
232 0
「错位算法时空」,让你彻底学会「时间」与「空间」复杂度
|
存储 算法 索引
哈希系列(空间换时间)
哈希系列(空间换时间)
|
存储 人工智能 算法
C++哈希应用-位图/布隆过滤器/海量数据处理(2)
C++哈希应用-位图/布隆过滤器/海量数据处理(2)
|
存储 数据处理 C++
C++哈希应用-位图/布隆过滤器/海量数据处理(1)
C++哈希应用-位图/布隆过滤器/海量数据处理(1)