gpt4 book ai didi

java - 按与学生的相似度对学生俱乐部的链接列表进行排序

转载 作者:行者123 更新时间:2023-12-02 02:45:45 25 4
gpt4 key购买 nike

我目前正在编写一个 Java 程序,根据用户对特殊兴趣、专业等问题的回答,将用户与推荐的学生组匹配。每个用户都由一个 User 对象定义。每个学生组都由一个 Group 对象定义。

我有一种为每个特定组实例分配特定分数的工作方法 - 例如,组 schoolNewspaper 的分数为 72,组 filmMakers 的分数为 99。

每个 Group 对象还有一个整数值,称为

int difference;

这表示用户得分与俱乐部得分之间的绝对值相似度。例如,如果某人参加测验并获得 71,则 schoolNewspaper 的差值将分配为 1,而 filmMakers Group 的差值将分配为 26。

将用户的分数与所有组的分数进行比较,从而为每个组分配一个差值。我想形成一个包含所有组的链接列表,然后对其进行排序,以使差值最小的组位于列表的开头。这是因为我将使用 5 个最相似的组来为用户创建推荐,并且我认为对列表进行排序并获取前 5 个元素比重复搜索更有效。

我不确定 Java 库中是否存在当前的排序方法,该方法可能会使此过程变得更容易 - 因为有时我会尝试重新发明轮子,而没有意识到如何使用某些库操作。那么,是否有一种特殊的方法可以使用唯一对象中定义的整数值来对此类对象的链接列表进行排序?我对编程相对较新,因此我们将不胜感激在方法/理论方面的任何帮助。

编辑:也许另一种数据结构比链表更适合这种排序?

最佳答案

您可以使用 Comparable 接口(interface)对组列表进行排序,使用 Collections.sort(List<Group> groups) :

群组实现示例:

public class Group implements Comparable{
private int difference;
... //code

public int compareTo(Group g) {
int diff = g.getDiff();
if(diff > this.difference) { // compared Group obj has greater diff
return -1;
}else if(diff == this.difference) { // compared Group obj has equal diff
return 0;
}else { // compared Group obj has lesser difference
return 1;
}
}
}

作为旁注:

通过说:“每个 Group 对象也有一个整数值,称为

int difference;

这表示用户得分与俱乐部得分之间的绝对值相似度。例如,如果某人参加测验并获得 71 分,则 schoolNewspaper 的差值将分配为 1,而 filmMakers Group 的差值将分配为 26。”

您是说该程序在用户使用该程序时向他/她提供即时反馈,还是基于集体?

如果是后者,我通过用户对象假设,那么收集用户的不同分数会更有效。然后,您只需计算方法中的差异,传入每个用户对象及其不同的分数,并对每个用户使用类似于上面提到的排序实现。

然后可以向用户对象传递匹配组对象的前 5 名列表。这样,您就不必更新 difference每个组对象的值,您也不需要创建每个组的多个实例。 :)

关于java - 按与学生的相似度对学生俱乐部的链接列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com