海量数据去重(set,字典,bloom)

海量数据去重

HashSet

  • HashSet不重复
  • 可以用O(1)判断数据是否存在
  • 海量数据的话可以拆分到HashMap每个桶或者多台机器上

BitSet

  • 如果海量数据是整数
  • 范围不大
  • 构造bit数组,数据都映射到上面
  • 如两个比特数组可以存0~3->00 01 10 11

字典树

  • 如果海量数据是字符串数据
  • 可以用很小空间开销构建字典树
  • 原理就是每个结点存放一个字符,子树则是下一个字符,当前value为1的话表示root到该节点的字符串存在了
    ddd

布隆过滤器

  • 原理就是经过多个hash函数散列到bitset中,设为1
  • 查找的时候也是通过多个hash函数看散列到的位置是否都为1,都为1的话则判定存在
  • 由于是hash,容易出现误判
  • 如果hash函数个数设置过大,容易带来更高的时间和空间开销
    2
全部评论

相关推荐

learYuan:🐕看了都摇头
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务