我被困在我有一個對象圖書,進行了三個變量Java的複雜排序
String title
int Year
String authorName
我必須用一種,兩種或升序所有三個變量或降序排列的書籍進行排序,我實現標題排序,但我堅持要做什麼,當人們選擇多個變量來訂購。
下面是我的一些代碼:
圖書類:
import java.util.ArrayList;
public class Book{
String title;
String authorName;
int editionYear;
public Book(String title, String authorName, int editionYear){
this.title = title;
this.authorName = authorName;
this.editionYear = editionYear;
}
public String getBookInfo(){
ArrayList bookInfo = new ArrayList();
bookInfo.add(this.title);
bookInfo.add(this.authorName);
bookInfo.add(this.editionYear);
return bookInfo.toString();
}
}
BookSorter類:
import java.util.Arrays;
import java.util.Comparator;
public class BookSorter{
private String sortkey;
private String order;
Book[] Books;
public BookSorter(Book Book1, Book Book2, Book Book3, Book Book4){
this.Books = new Book[] {Book1, Book2, Book3, Book4};
}
public Book[] sortByTitle(boolean sortorder){
Comparator<Book> byTitle = new TitleComparator(sortorder);
Arrays.sort(Books, byTitle);
for(int i=0;i<4;i++) System.out.println(Books[i].title);
return Books;
}
}
TitleComparator:
import java.util.Comparator;
class TitleComparator implements Comparator<Book> {
boolean ascending;
public TitleComparator(boolean ascending){
this.ascending = ascending;
}
public int compare(Book Book1, Book Book2){
if(ascending == true){
if(Book1.title.compareToIgnoreCase(Book2.title) > 0) return 1;
else if(Book1.title.compareToIgnoreCase(Book2.title) < 0) return -1;
else return 0;
}else{
if(Book2.title.compareToIgnoreCase(Book1.title) < 0) return -1;
else if(Book2.title.compareToIgnoreCase(Book1.title) > 0) return 1;
else return 0;
}
}
}
不過,我覺得我可以工作小莫在比較器上,但我真的被困在如何建模這樣的事情,在此先感謝
這功課嗎?如果是這樣,請將其標記爲這樣。 – CoolBeans 2011-01-22 21:45:33
這是沒有功課,我正在學習評估; D – bwagner 2011-01-22 22:26:08
@CoolBeans:請[不要暗示元標記](http://meta.stackexchange.com/questions/10811/how-to-ask-and -answer-功課 - 問題)。 – 2011-01-22 22:57:54