单一属性的很大一群元素该如何存储?
面试题:有一亿个人,每个人只有性别这个属性,各自都有编号,你用什么样的结构来存储?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
面试题:有一亿个人,每个人只有性别这个属性,各自都有编号,你用什么样的结构来存储?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
给人群从0开始按顺序编号,然后用bit set,只需16M内存,获取每个人性别的操作复杂度O(1),获取全部男性或者女性的复杂度O(n)
当然如果你要还考虑中性之类的特殊情况另当别论。
如果不提出进一步的检索要求,可能我会喜欢对人名做哈希运算,然后平摊分布到各个存储节点。
注意肯定不能在存储结构上一分为二,男女各用一个存储区。哪怕不考虑“保密”、“未提供”等因素,性别也绝对不是一分为二的。性别只能看作一般的枚举类型数据。
先该问问这些数据以后的使用场景吧?
比如如果只有一种使用场景:看看某种性别的人数,那都不需要把每个人的编号存下来呀,直接存个总数就行了(当然这不太可能,只是举个例子)