我的練習說我應該用幾種方法實現一個叫做歌曲的類。 (見下文) 然後我應該具有給定的比較代碼的方法:如何在compareTo()中做更多的比較?
鬆1 < song2當且僅當
- song1.singer < song2.singer
- song1.singer = song2.singer∧ song1.title < song2.title
- song1.singer = song2.singer∧song1.title = song2.title∧song1.year> song2.year
鬆1 = song2當且僅當
- song1.singer = song2.singer∧song1.title = song2.title∧song1.year = song2.year
鬆1> song2其他
我執行第一次比較,它的工作原理,但我不知道如何寫下其他人。你有什麼提示嗎? 我只允許使用Comparable,而不是Comparator!
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Songs implements Comparable<Songs>{
private String singer;
private String title;
private Integer year;
Songs(String singer, String title, int year){
this.singer = singer;
this.title = title;
this.year = year;
}
public String getSinger(){
return this.singer;
}
public String getTitle(){
return this.title;
}
public int getYear(){
return this.year;
}
public String getCompleteName(){
return this.singer+"\t"+this.title.toString()+" - "+this.year.toString();
}
public int compareTo(Songs o) {
if (o.getSinger() == this.getSinger()) {
return 0;
}
if (this.getSinger()==null) {
return 1;
}
if (o.getSinger() == null) {
return -1;
}
return this.getSinger().compareTo(o.getSinger());
}
public static void main(String[] args) {
List<Songs> list = new ArrayList<Songs>();
list.add(new Songs ("Birdman","Breathe", 1994));
list.add(new Songs ("Lgoony","Nebel", 2012));
list.add(new Songs ("Recondite","Cleric",2015));
list.add(new Songs ("Alpha", "Beta", 1023));
list.add(new Songs ("Cleric", "zoom", 1999));
list.add(new Songs ("Cleric", "boom", 1999));
Collections.sort(list);
for (Songs x : list) {
System.out.println(x.getCompleteName());
}
}
}
您已經標記了你的問題都'comparator'和'comparable',和你「歌曲」班正在實施「可比」。你是否需要使用其中一種,或者你可以選擇哪一種更方便? –
我只是添加這個有更多的標籤,我只允許使用可比較的 – Sascha
啊,我知道如何用比較器,但我不知道如何用Comparable做到這一點,那我的問題 – Sascha