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

How can I implement this Array.sort method into my actionPerformed?

我在一个 class 中有这个 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);
}

我打算在我的侦听器的 actionPerformed 中使用它 class,但我不知道如何创建必要的参数 (Film[]) 来使用 Array.sort 方法。我的意图是在按下特定按钮后从最高到最低显示所有对象的列表。

提前致谢!

编辑:

这就是我认为的样子:

@Override
public void actionPerformed(ActionEvent e) {
    this.cm.sortFilm(?);
}

问号是缺少的参数。

由于您需要将 Film 对象排序在一起,因此您需要一个 compareTo 函数来将每 2 个 Films 放在一起进行比较,您可以在 Film Class 中通过实施 Comparable<Film> 然后实施 compareTo 来实现class.

中的方法

之后,将您的电影保存在任何 collection 中作为 ArrayList 而不是数组,然后只需调用 Collections.sort(films) 即可让您的电影列表按升序或降序排列。

这里是演示的电影class:

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
       }     
    }

所以你的 actionPerformed 会像这样

@Override
public void actionPerformed(ActionEvent e) {
    Collections.sort(films,Comparator.reverseOrder());
    //now films are sorted! use films objects to do anything you need

}