gpt4 book ai didi

java - 使用Comparable查找最大/最小值

转载 作者:行者123 更新时间:2023-11-30 03:30:49 25 4
gpt4 key购买 nike

我有一个对象类

public class Film implements Comparable<Film>

我正在使用 Eclipse,想知道为什么 Film用红色下划线显示错误:

The type Film must implement the inherited abstract method Comparable<Film>.compareTo<Film>

现在我的主要问题是:

如何获取用户提交的最大/最小电影长度和标题?

我的对象类 Film 有用于电影标题和电影长度的 getter 和 setter 方法以及 toString 方法。正在关注this文章 (#3) 我在对象类中创建了另外两个方法:

public int max(Film maxLength){
int compareLength = ((Film) maxLength).getLength();

return this.length - compareLength;
}

public int min(Film minLength){
int compareLength = ((Film) minLength).getLength();

return compareLength - this.length;
}

我可以使用这些来查找并打印用户提交的胶片长度的最大/最小值吗?

如果是这样,怎么办?

如果没有,正确的方法是什么?

测试类如下:

import java.util.Scanner;
public class test {
public static void main (String[] args){
Film[] f = new Film[3];
Scanner input = new Scanner(System.in);
for (int i=0;i<3;i++){
f[i] = new Film();

System.out.println("Enter Film Length:");
f[i].setLength(input.nextInt());
input.nextLine();
System.out.println("Enter Title:");
f[i].setTitle(input.nextLine());
}
input.close();
for (int i = 0; i < 3; i++) {
System.out.println(f[i].toString());
}
}
}

最佳答案

Film类实现Comparable<Film> 。这意味着您必须实现一个名为 compareTo() 的方法。上课Film这将为此类的对象提供排序。

@Override
public int compareTo(Film that) {
// Order by film length
return Integer.compare(this.length, that.length);
}

如果您只需要按胶片长度对对象进行排序,您可以使用 Arrays.sort() :

Film[] films = new Film[3];
// put the objects into the array
Arrays.sort(films);

然后films[0]将包含长度最短的影片,而最后一个元素将是长度最长的影片。

如果您需要按其他字段进行比较,例如电影标题,您可以创建自定义比较器:

class FilmTitleComparator implements Comparator<Film> {
public int compare(Film a, Film b) {
return Integer.compare(a.getTitle().length(), b.getTitle().length());
}
}

并将其传递给Arrays.sort()

FilmTitleComparator titleComparator = new FilmTitleComparator();
Arrays.sort(films, titleComparator);

然后films[0]将包含标题最短的电影,而最后一个元素将是标题最长的电影。

关于java - 使用Comparable查找最大/最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com