使用私有实例变量创建公共类Movie。字符串标题 和int年。该类应声明它实现了 可比较的界面,应该提供以下内容:
•带有2个参数的构造函数:String和int(按此顺序)
用于初始化标题和年份。
•满足Comparable接口的方法。电影应首先按标题进行比较,然后逐年进行比较。
{Maltese Falcon 1941,The Thomas Crown Affair 1968,The Thomas Crown Affair 1999}
与满足该方法的方法兼容的equals()方法 可比的界面。
•一个toString()方法,打印“Movie”后跟1个空格,后跟
标题后跟1个空格,后跟左括号,后跟
这一年紧随其后的是括号。例:
马耳他猎鹰(1941年)
•公共静态方法getTestMovies(),返回10的数组
独特的电影实例。第0个和第1个数组元素必须是2个电影
具有相同的标题,但来自不同的年份(例如The Thomas Crown
1968年的事件和1999年的托马斯皇冠事件,或真正的Grit 1969和
真正的Grit 2010)。第2和第3个元素必须有2个不同的电影
同一年的头衔(例如The Martian 2015和Spies of Bridge 2.4
2015年)。第4和第5个元素必须是2个不同的对象
代表同一部电影。
•hashCode()方法。使用以下内容:
public int hashCode()
{
return title.hashCode() + year;
}
以下是我到目前为止的内容,我有构造函数和启动器,但我确定该怎么做。
public class Movie implements Comparable<Movie>{
private String title;
private int year;
public Movie(String title, int year){
this.title = title;
this.year = year;
}
@Override
public int compareTo(Movie that) {
int value = 0;
if(this.title == that.title)
{
if(this.year < that.year){
value = 0;
}
else{
value = -1;
}
}
return value;
}
public static void getTestMovie(){
}
public boolean equals(Object x)
{
} }
任何帮助都表示赞赏!
答案 0 :(得分:1)
当你想要自然顺序以外的排序时,你应该比较比较而不是比较。请点击以下链接获取更多信息: What is the difference between compare() and compareTo()?
关于字符串比较,请使用str1.equals(str2)。原因如下,链接: What is the difference between == vs equals() in Java?
对于其他问题,请发布一些经过验证的代码。
答案 1 :(得分:0)
您不能在字符串上使用this.title == that.title
。您应该使用this.title.equals(that.title)
。
除了,对于此代码,您不应该。您应该使用this.title.compareTo(that.title)
。
如果返回非零,则返回该值,因为它表示标题不同时的排序。
如果它返回零,则标题相同,您需要在年份进行二次检查。使用Integer.compare(this.year, that.year)
。