Java 如何在actionPerformed中实现此Array.sort方法?

Java 如何在actionPerformed中实现此Array.sort方法?,java,arrays,swing,sorting,actionlistener,Java,Arrays,Swing,Sorting,Actionlistener,我在一个类中有这个Array.sort方法,可以从最高到最低列出我的对象: public static void sortFilm(Film[] array) { Arrays.sort(array, new Comparator<Film>() { @Override public int compare(Film f1, Film f2) { return Double.compare(f1.getFinalScor

我在一个类中有这个Array.sort方法,可以从最高到最低列出我的对象:

public static void sortFilm(Film[] array) {
    Arrays.sort(array, new Comparator<Film>() {
        @Override
        public int compare(Film f1, Film f2) {
            return Double.compare(f1.getFinalScore(), f2.getFinalScore());
        }
    });
    printArr(array);
}

问号是缺少的参数。

由于您需要将胶片对象排序在一起,您需要一个compareTo函数来比较每两张胶片,您可以在
胶片类中通过实现
Comparable
然后在类中实现
compareTo
方法来实现这一点

之后,将您的电影保存在任何
集合中,作为
ArrayList
而不是数组,然后只需调用
Collections.sort(films)
即可按递增或递减顺序获取电影列表

以下是一节电影课的演示:

public class Film implements Comparable<Film>{
  int finalScore ;

  public Film(int finalScore){
      this.finalScore = finalScore;
  }

  public int getFinalScore(){
      return this.finalScore;
  }

  @Override
  public int compareTo(Film film2) {
      return Double.compare(this.finalScore, film2.finalScore);
  }
}

我不确定我们能在这里提供什么帮助,因为我们将如何根据您发布的少量代码猜测如何创建电影阵列。考虑创建一个有效的,在这里发布代码,从而帮助我们更好地理解您的问题。另外,您最好在此处使用
ArrayList
,而不要使用胶片阵列。很抱歉给您带来不便,我对这一切都是新手。不过,另一张海报起了很大的作用。不过,还是要谢谢你的安排!请注意,如果你在这里发帖之前至少尝试解决你的问题,你会学到更多。即使你没有成功,你也可以问一个更好的问题,这个问题向我们展示了你的尝试,并以这种方式向我们展示了你到底混淆了什么。否则,你基本上是要求别人为你写代码,这是不好的。嘿,你又来了!这真让人难堪,原来我在另一篇文章里不够清楚。我想我现在可以解决这个问题,并且可以在我的代码中实现它。谢谢!再一次!没问题:)我很乐意随时帮助你:)
public class Film implements Comparable<Film>{
  int finalScore ;

  public Film(int finalScore){
      this.finalScore = finalScore;
  }

  public int getFinalScore(){
      return this.finalScore;
  }

  @Override
  public int compareTo(Film film2) {
      return Double.compare(this.finalScore, film2.finalScore);
  }
}
public static void main(String[] args) {
        ArrayList<Film> films = new ArrayList<>();
        films.add(new Film(100));
        films.add(new Film(400));
        films.add(new Film(200));
        films.add(new Film(300));
        /*reverse order is the reversed order of your compareTo method
         , as you need Decreasing manner and the compareTo method
          outputs the Increasing manner then you need to reverse it,
          remove this comparator if you need it increasing.*/
        Collections.sort(films,Comparator.reverseOrder());
    for (Film film : films) {
        System.out.print(film.finalScore+" "); // prints 400 300 200 100
       }     
    }
@Override
public void actionPerformed(ActionEvent e) {
    Collections.sort(films,Comparator.reverseOrder());
    //now films are sorted! use films objects to do anything you need

}