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

简介: 写作目的今天在网上看到一个有意思的问题是多大的数据量会出现哈希碰撞?我当时的想法是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左右的量级会出现哈希碰撞

目录
相关文章
|
5月前
|
存储 人工智能 算法
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
41 0
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
|
6月前
|
算法 测试技术 C++
C++算法:让数组不相等的最小总代价
C++算法:让数组不相等的最小总代价
|
9月前
|
存储 小程序 编译器
数据在内存中存储的现象
数据在内存中存储的现象
66 0
|
10月前
|
算法
位图算法(空间换时间)
位图算法(空间换时间)
|
11月前
|
SQL 存储 Oracle
前缀索引,在性能和空间中寻找平衡
前缀索引,在性能和空间中寻找平衡
|
12月前
|
存储 NoSQL 测试技术
rediskey值内存消耗以及性能影响
rediskey值内存消耗以及性能影响
163 0
|
存储 算法 索引
哈希系列(空间换时间)
哈希系列(空间换时间)
|
存储 监控 关系型数据库
分分钟解决MySQL查询速度慢与性能差
分分钟解决MySQL查询速度慢与性能差 一、什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
2634 0
|
SQL 关系型数据库 MySQL
巧用这19条MySQL优化,效率至少提高3倍
1、EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划 type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。
1367 0