数组列表对象排序如何工作?

时间:2015-05-06 22:48:58

标签: java arrays sorting arraylist

我有一个名为Movie的对象和一个名为movieList的数组列表。该对象包含诸如nameOfMovie,movieGenre,dateRelised,curentRating之类的变量。所有这些变量都有获取和设置。除此之外,我有一个表格,每个变量都有一个textarea打印出来。我在徘徊如何实际使用数组列表来对存储的数据进行排序。

所以,例如,如果我想将电影的curentRating从最小到最大排序,那么该程序的语法是什么?

1 个答案:

答案 0 :(得分:0)

您的电影课程需要实施'可比较的'接口。 https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

根据文档,您需要一个名为:compareTo(T o)

的方法
  

int compareTo(T o)   将此对象与指定的对象进行比较以获得顺序。返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。   实现者必须确保所有x和y的sgn(x.compareTo(y))== -sgn(y.compareTo(x))。 (这意味着如果y.compareTo(x)抛出异常,x.compareTo(y)必须抛出异常。)

     

实现者还必须确保关系是传递的:(x.compareTo(y)> 0& y.compareTo(z)> 0)意味着x.compareTo(z)> 0。 / p>      

最后,实现者必须确保x.compareTo(y)== 0意味着所有z的sgn(x.compareTo(z))== sgn(y.compareTo(z))。

     

强烈建议,但并非严格要求(x.compareTo(y)== 0)==(x.equals(y))。一般来说,任何实现Comparable接口并且违反此条件的类都应该清楚地表明这一事实。建议的语言为"注意:此类具有与equals不一致的自然顺序。"

     

在前面的描述中,符号sgn(表达式)指定数学符号函数,其被定义为根据表达式的值是负,零还是正来返回-1,0或1中的一个。

所以基本上你会有一个声明如下的电影类:

public class Movie implements Comparable{
  String nameOfMovie;
  .
  .
  .
  public int compareTo(Movie otherMovie){
     return someint;//this will be -1 if it's less than the current movie, 0 if its the same and 1 if its more than in terms of logical ordering;
  }

}

请参阅文档以获取更多信息。