我一直在研究一些有关如何根据对象的属性对对象进行排序的教程.例如,如果我们有一个名为person的类,它具有一个名为name的属性,则只需实现Comparable接口并覆盖compareto.
但是,不同的教程显示了您在compareto内编写的不同代码,例如,这里是one way:
public int compareto(Object o) throws ClassCastException {Date d = (Date)o; // If this doesn't work, ClassCastException is thrownint yd = year - d.year;int md = month - d.month;int dd = day - d.day;if (yd != 0) return yd; else if (md != 0) return md; else return dd;
}
但是这里是different way来编写compareto方法:
@OverrIDe public int compareto(Student1 o) { return Integer.compare(grade, o.grade);}
结果,我对于编写适当的compareto所需的算法或公式完全感到困惑
解决方法:
这完全取决于如何实现接口Comparable.
如果在课堂上你看到
implements Comparable
那么第一个compareto方法是正确的.这是通过Java 1.4实现可比性的方法,Java 1.4是引入泛型之前的最新版本.它正在实现Raw接口Comparable(没有任何泛型).
如果在课堂上你看到
implements Comparable<Student1>
那么第二个compareto方法是正确的.在这种情况下,泛型可以通过在compareto方法中提供参数的类型来提供帮助.
两者都是正确的,但第一个已过时,第二个现在已受青睐.
> Comparable
javadocs
> Java generics tutorial
以上是内存溢出为你收集整理的Java的新手-如何编写compareTo方法进行排序全部内容,希望文章能够帮你解决Java的新手-如何编写compareTo方法进行排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)