2017-06-17 40 views
0

我目前正在写匹配用户根据自己对问题的回答关于特殊利益集团,主要等等 每个用户通过用户对象定义推荐学生群体的Java程序。每个学生组由一个Group对象定义。通过排序相似度链接学生俱乐部的名单,以学生

我有分配每个特定组的实例,例如一个特定的记分的加工方法,该集团schoolNewspaper的得分为72,以及该组的电影制片人的得分为99。

每个组对象也具有一个整数值,称为

int difference; 

这表示用户的得分和俱乐部的得分之间的绝对值的相似性。例如,如果某人参加了测验并获得71,则将学校报纸的差值分配为1,并将filmMakers组分配为26的差值。

将用户的分数与所有组分数进行比较,从而为每个组分配一个差值。我想,以形成包含所有组的链表,然后责令这样,那些具有最小差值在列表的头部。这是因为我将使用5个最相似组创建用户的建议,我觉得这将是更有效的对列表进行排序,并采取前5个元素,而不是反复搜索。

我不知道如果当前的排序方法的Java库,可能使这个过程easier-因为有时候我尝试推倒重来没有意识到某些库操作如何使用存在。那么,是否有一种使用独特对象中定义的整数值来排序这些对象的链表的方法?我对编程相对比较陌生,所以在方法/理论方面的任何帮助将不胜感激。

编辑:也许另一个数据结构可能是这种排序,而不是链表好?

+0

谢谢!我实际上首先阅读这个问题,但它涉及使用库操作的字符串排序。这特别涉及整数 – rubyquartz

+0

为什么你不能使用相同的答案来整理你的整数? –

回答

2

您可以使用可比接口使用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; 
     } 
    } 
} 

正如一个侧面说明:

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

int difference; 

这表示用户的分数和分会的分数之间的绝对值的相似性。例如,如果某人参加了测验并获得71,则将学校报纸的差异值指定为1,并将filmMakers组分配为26的差值。“

您是说该程序给用户立即当他/她正在使用该程序时的反馈,还是它是基于集体?

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

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