首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中查找前10位匹配的算法

Java中查找前10位匹配的算法
EN

Stack Overflow用户
提问于 2015-05-24 15:42:57
回答 2查看 268关注 0票数 0

我正在编写逻辑,以便针对用户对象列表为请求(包含8个属性)查找前10个匹配项(用户对象对请求中的8个属性中的每个属性都有一个值)。我必须从这个用户对象列表中找到前10个匹配项。

我目前所做的是:

  1. 翻阅名单。
  2. 执行请求属性与用户对象存储属性的匹配。如果5个属性匹配,我认为它是匹配的,并将MATCH_COUNT更新为1。

像这样,我继续遍历以找到前10个匹配(5个属性匹配)。每当我将MATCH_COUNT设置为10时,我就会中断循环,即使列表没有被完全遍历

这种方法的问题是列表中未遍历的用户对象可能有超过5个属性的匹配,但是我没有遍历,因为我已经停止了。

那你有什么建议?这肯定涉及到在到达比赛之前遍历整个列表,但我想不出一个有效的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2015-05-24 15:50:29

  • 遍历用户对象的完整列表
  • 在一个单独的类中对每个用户对象的匹配进行计数,然后插入到一个列表中。
  • 根据匹配计数对列表进行排序
  • 如果列表超过10,则返回前10,否则返回完整的列表。
票数 0
EN

Stack Overflow用户

发布于 2015-05-24 19:38:58

您应该在比较器中使用快速选择来比较两个元素的匹配数。该算法平均运行时间为O( n),优于排序所需的时间O(n log N)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30425335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档