我有四个推荐列表,假设列表是 A、B、C、D。 每个列表都有相同数量的项目,并表示为键值对。但是我需要为列表 A 的元素赋予比列表 B 更高的优先级(权重),依此类推。最终我需要从四个列表中选择最好的一组项目作为最终推荐。
这是一个用例:
列表_A: {item1,weight1} {item2,weight1} {item3,weight1} {item4,weight1} {item5,weight1}
列表_B: {item8,weight2} {item5,weight2} {item7,weight2} {item2,weight2} {item6,weight2}
列表_C: {item11,weight3} {item23,weight3} {item34,weight3} {item24,weight3} {item5,weight3}
列表_D: {item9,weight4 {item7,weight4 {item3,weight4 {item2,weight4 {item5,weight4
假设权重1=10,权重2=5,权重3=3,权重1=2
根据这些列表,最终列表应该将“item5”作为第一项,因为它存在于所有四个列表中。如何获得这四个列表的其他最佳推荐?
谢谢。
最佳答案
如果我没理解错的话,这应该有点简单。在更高层次上,您需要一个数据结构作为
Map<Item, Map<List, Integer>>
其中最后一个整数是 number_of_occurrences。一旦你有了,就可以直接乘以 number_of_occurrences * weight 并将它与生成的值一起扔到 TreeMap 中(这里也可以使用优先级队列)
现在您可以从 TreeMap 中获得前 n 个列表。
关于java - 从多个推荐列表中提取热门推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6082480/