Java的新手-如何编写compareTo方法进行排序

Java的新手-如何编写compareTo方法进行排序,第1张

概述我一直在研究一些有关如何根据对象的属性对对象进行排序的教程.例如,如果我们有一个名为person的类,它具有一个名为name的属性,则只需实现Comparable接口并覆盖compareTo.但是,不同的教程显示了您在compareTo内编写的不同代码,例如,这里是oneway:publicintcompareTo(Objecto)

我一直在研究一些有关如何根据对象的属性对对象进行排序的教程.例如,如果我们有一个名为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方法进行排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存