Java 如何在actionPerformed中实现此Array.sort方法?
我在一个类中有这个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
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
}