首页 > 单一属性的很大一群元素该如何存储?

单一属性的很大一群元素该如何存储?

面试题:有一亿个人,每个人只有性别这个属性,各自都有编号,你用什么样的结构来存储?


先该问问这些数据以后的使用场景吧?
比如如果只有一种使用场景:看看某种性别的人数,那都不需要把每个人的编号存下来呀,直接存个总数就行了(当然这不太可能,只是举个例子)


给人群从0开始按顺序编号,然后用bit set,只需16M内存,获取每个人性别的操作复杂度O(1),获取全部男性或者女性的复杂度O(n)
当然如果你要还考虑中性之类的特殊情况另当别论。


如果不提出进一步的检索要求,可能我会喜欢对人名做哈希运算,然后平摊分布到各个存储节点。

注意肯定不能在存储结构上一分为二,男女各用一个存储区。哪怕不考虑“保密”、“未提供”等因素,性别也绝对不是一分为二的。性别只能看作一般的枚举类型数据。

【热门文章】
【热门文章】