我在接受采访时遇到了这个问题。
假设我们有访问网站的用户的日志信息,包括网站,用户,时间等信息。我们需要设计一个可以获取
信息的数据结构全部实时
我想到的第一个想法是我们可以只使用数据库来存储日志,每次我们只需要为每个用户或每个网站进行计数和排序。但它不是实时的,因为我们需要做大量的计算来获取信息。
然后我认为我们可以为每个问题使用HashMap。例如,对于我们使用HashMap<Website, <TreeMap<User, count>>
的每个网站,我们可以获得特定网站的前五名访问者。但是访调员说我们只能对所有三个问题使用一个数据结构,因为第二个问题会使用HashMap<User, <TreeMap<Website, count>>
,它具有不同的键和值类型。
有人能想出这个问题的好方法吗?
答案 0 :(得分:0)
带有泛型类型的地图地图,作为基本方法。
第一张地图代表全球数据结构,其中包含三个问题的地图。
第一张内部地图,您将拥有网站作为密钥和前5名用户的列表。
第二张内部地图,您将把用户作为密钥,并列出他访问过的前5名网站。
对于最后一个问题,您可以将网站作为密钥,将访问者数量作为第三个内部地图上的值。
如果他们的意思是针对三个不同的问题拥有相同的数据结构,那么就要忘掉全球地图。
如果您想更深入了解,可以考虑使用邻接矩阵实施,其中您的用户和网站标识是您的列/行标识符,值是访问者数量。