如何让 JButton 激活 compareTo 函数?
How can I make a JButton activate a compareTo function?
这有点尴尬。我有一个我打算在 JButton 上使用的 compareTo 函数,因此当用户按下它时,他们可以看到哪个是排名最高的对象。我已经有一个用于 JButton 的监听器 class,但我不知道如何让监听器使用 compareTo 函数,因为它需要两个参数。
这是我的 compareTo 函数:
public int compareTo(Film film1, Film film2) {
if (film1.getFinalScore() < film2.getFinalScore()) return -1;
if (film1.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
这是 Listener 中的 actionPerformed 函数 class:
@Override
public void actionPerformed(ActionEvent e) {
this.cm.compareTo(null, null);
}
自动更正建议将参数设置为 null 以使其工作,但显然它从来没有像自动更正建议的那样简单。
那么,如何让 Listener 使用我的所有对象执行 compareTo 函数以从高到低列出它们?
提前致谢!
因为您需要将 2 部电影放在一起进行比较,您可以在 Film Class
中通过实施 Comparable<Film>
然后在 class.[=19 中实施 compareTo
方法来做到这一点=]
之后,将您的电影放在任何 collection
中作为 ArrayList
,然后只需调用 Collections.max(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) {
if (this.getFinalScore() < film2.getFinalScore()) return -1;
if (this.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
}
这是主要的:
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));
System.out.println(Collections.max(films).getFinalScore());//prints 400
}
所以你的 actionPerformed 会像这样
@Override
public void actionPerformed(ActionEvent e) {
Film maxFilm = Collections.max(films);
//then use maxFilm object to do anything you need
}
这有点尴尬。我有一个我打算在 JButton 上使用的 compareTo 函数,因此当用户按下它时,他们可以看到哪个是排名最高的对象。我已经有一个用于 JButton 的监听器 class,但我不知道如何让监听器使用 compareTo 函数,因为它需要两个参数。
这是我的 compareTo 函数:
public int compareTo(Film film1, Film film2) {
if (film1.getFinalScore() < film2.getFinalScore()) return -1;
if (film1.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
这是 Listener 中的 actionPerformed 函数 class:
@Override
public void actionPerformed(ActionEvent e) {
this.cm.compareTo(null, null);
}
自动更正建议将参数设置为 null 以使其工作,但显然它从来没有像自动更正建议的那样简单。
那么,如何让 Listener 使用我的所有对象执行 compareTo 函数以从高到低列出它们?
提前致谢!
因为您需要将 2 部电影放在一起进行比较,您可以在 Film Class
中通过实施 Comparable<Film>
然后在 class.[=19 中实施 compareTo
方法来做到这一点=]
之后,将您的电影放在任何 collection
中作为 ArrayList
,然后只需调用 Collections.max(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) {
if (this.getFinalScore() < film2.getFinalScore()) return -1;
if (this.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
}
这是主要的:
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));
System.out.println(Collections.max(films).getFinalScore());//prints 400
}
所以你的 actionPerformed 会像这样
@Override
public void actionPerformed(ActionEvent e) {
Film maxFilm = Collections.max(films);
//then use maxFilm object to do anything you need
}