我是在一次面试中提出这个问题的。
假设我们有用户访问网站的日志信息,包括网站、用户、时间等信息。我们需要设计一个数据结构来获取
全实时
我想到的第一个想法是,我们可以使用一个数据库来存储日志,每次我们只需要对每个用户或每个网站进行计数和排序。但这不是实时的,因为我们需要做大量的计算才能得到信息。
那么我想我们可以对每个问题使用HashMap。例如,对于每个网站,我们使用HashMap<Website, <TreeMap<User, count>>,以便我们可以得到前五个访问者的特定网站。但采访者说,对于这三个问题,我们只能使用一个数据结构,因为第二个问题将使用不同的键和值类型的HashMap<User, <TreeMap<Website, count>>。
有人能想出解决这个问题的好办法吗?
发布于 2017-09-23 23:05:35
具有泛型类型的映射映射,作为基本方法。
第一个映射表示全局数据结构,它将包含这三个问题的映射。
第一个内部地图,你将有一个网站作为关键和前5名用户名单。
第二个内部地图,你会有一个用户作为一个关键和名单前5次访问的网站由他。
对于最后一个问题,您可以将网站作为键,访问者的数量作为第三个内部地图上的值。
如果他们的意思是在三个不同的问题上有相同的数据结构,那么thant就忘记了全球地图。
如果您想深入一点,可以考虑使用邻接矩阵实现,其中用户和网站标识是您的列/行标识符,值是访问者的数量。
https://stackoverflow.com/questions/46384922
复制相似问题