我是否正确使用compareTo方法

时间:2012-04-28 19:01:44

标签: java

我坚持以下问题:

  

研究以下Java类头和代码片段:

class ExamScript implements Comparable<ExamScript>
{
    private String studentName;
    private int mark;
    ...rest of class...

    /**
      * Compares this object with the specified object for e
      *@param e the object to be compared
      *@return -1 if object is less than the specified object
      *@return 0 if object is equal to the specfied object
     **/
       public int compareTo(ExamScript e)
       {
         if (mark < e.mark)
             return - 1;
         if (mark == e.mark)
             return 0;
         return 1;
       }
}
     

compareTo方法提供合适的文档。特别声明了从此方法返回的值的含义。

     

根据您的规范编写compareTo方法的代码。

我已经记录并编写了如上所示的代码。任何人都可以向我确认我是否可以改进我的文档/编码或者这样做是否正常?

2 个答案:

答案 0 :(得分:1)

请务必添加@returns 1 if e is greater than this object.

您可以更加具体地使用@returns。尝试使用我上面使用的格式。此外,如果从阅读代码中看不清楚,请尝试解释什么是标记,以及为什么用它来比较。

查看Oracle's standards了解详情。

答案 1 :(得分:1)

问题我发现,当成绩相等时,学生被认为是平等的(至少当算法假设a.compareTo(b)==0暗示a.equals(b)取决于你的使用时,这可能是一件好事

但是如果它很糟糕你可以通过比较名称而不是返回0

来解决这个问题
public int compareTo(ExamScript e)
{
  if (mark < e.mark)
      return - 1;
  if (mark == e.mark)
      return studentName.compareTo(e.studentName);
  return 1;
}