Java 按与学生的相似性排序学生俱乐部的链接列表
我目前正在编写一个Java程序,根据用户对特殊兴趣、专业等问题的回答,将用户与推荐的学生组进行匹配。 每个用户由一个用户对象定义。每个学生组由一个组对象定义 我有一种工作方法,可以给每个特定的小组实例分配一个特定的分数——例如,校报小组的分数是72,电影制片人小组的分数是99 每个组对象也有一个整数值,称为Java 按与学生的相似性排序学生俱乐部的链接列表,java,sorting,user-input,Java,Sorting,User Input,我目前正在编写一个Java程序,根据用户对特殊兴趣、专业等问题的回答,将用户与推荐的学生组进行匹配。 每个用户由一个用户对象定义。每个学生组由一个组对象定义 我有一种工作方法,可以给每个特定的小组实例分配一个特定的分数——例如,校报小组的分数是72,电影制片人小组的分数是99 每个组对象也有一个整数值,称为 int difference; int difference; 这表示用户得分和俱乐部得分之间的绝对值的相似性。例如,如果有人参加测验并得到71分,校报的差值将被指定为1,电影制作人组的
int difference;
int difference;
这表示用户得分和俱乐部得分之间的绝对值的相似性。例如,如果有人参加测验并得到71分,校报的差值将被指定为1,电影制作人组的差值将被指定为26
将用户分数与所有组分数进行比较,从而为每个组分配一个差值。我想形成一个包含所有组的链接列表,然后对其进行排序,使差异值最小的组位于列表的顶部。这是因为我将使用5个最相似的组为用户创建一个推荐,我觉得对列表进行排序并获取前5个元素比重复搜索更有效
我不确定Java库中是否存在当前的排序方法,这可能会使这个过程变得更容易——因为有时我试图在没有意识到如何使用某些库操作的情况下重新发明轮子。那么,是否有一种特殊的方法可以使用在唯一对象中定义的整数值来排列此类对象的链接列表?我对编程相对来说比较陌生,所以如果您在方法/理论方面有任何帮助,我将不胜感激
编辑:也许另一种数据结构比链表更适合此排序?您可以使用可比较的界面使用集合对组列表进行排序。排序(列表组): 组实施示例:
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;
}
}
}
作为旁注:
这样说:“每个组对象也有一个整数值,称为
int difference;
int difference;
这表示用户分数和俱乐部分数之间的绝对值的相似性。例如,如果有人参加测验并获得71分,校报的差值分配为1,电影制作人组的差值分配为26。”
你是说当用户使用该程序时,该程序会立即给他/她反馈,还是说它是基于用户的集体反馈
如果是后者,我假设是用户对象,那么收集用户的不同分数会更有效。然后,您只需计算方法中的差异,将每个用户对象的不同分数传递进来,并对每个用户使用类似于上面提到的排序实现
然后可以向用户对象传递匹配组对象的前5个列表。这样,您就不必更新每个组对象的
差异值,也不需要为每个组创建多个实例。:) 您可以使用可比较界面,使用集合对组列表进行排序。排序(列表组)
:
组实施示例:
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;
}
}
}
作为旁注:
这样说:“每个组对象也有一个整数值,称为
int difference;
int difference;
这表示用户分数和俱乐部分数之间的绝对值的相似性。例如,如果有人参加测验并获得71分,校报的差值分配为1,电影制作人组的差值分配为26。”
你是说当用户使用该程序时,该程序会立即给他/她反馈,还是说它是基于用户的集体反馈
如果是后者,我假设是用户对象,那么收集用户的不同分数会更有效。然后,您只需计算方法中的差异,将每个用户对象的不同分数传递进来,并对每个用户使用类似于上面提到的排序实现
然后可以向用户对象传递匹配组对象的前5个列表。这样,您就不必更新每个组对象的差异值,也不需要为每个组创建多个实例。:) 谢谢!实际上,我首先读了这个问题,但它涉及到使用库操作按字符串排序。这是专门针对整数的,为什么不能用相同的答案对整数进行排序呢?谢谢!实际上,我首先读了这个问题,但它涉及到使用库操作按字符串排序。这是专门针对整数的,为什么不能使用相同的答案对整数进行排序?