图书课
import java.util.Comparator;
导入 java.util.Objects;
公共类 Book 实现 Comparable {
private String bookName;
private String autherName;
private String isbn;
public Book(String bookName, String autherName, String isbn) {
this.bookName = bookName;
this.autherName = autherName;
this.isbn = isbn;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAutherName() {
return autherName;
}
public void setAutherName(String autherName) {
this.autherName = autherName;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
@Override
public int compareTo(Book book) {
return this.bookName.compareTo(book.bookName);
}
@Override
public int hashCode() {
int hash = 7;
hash = 53 * hash + Objects.hashCode(this.bookName);
return hash;
}
@Override
public String toString(){
return bookName +" "+autherName + " "+isbn;
}}
书架
public class BookShelf {
private ArrayList<Book> bookList = new ArrayList<Book>();
public void addBook(Book book) {
bookList.add(book);
}
public ArrayList<Book> bookList(String sortBy) {
ArrayList<Book> list = new ArrayList<Book>(bookList);
SortingComparator comparator = null;
if (sortBy.equals("auther")) {
comparator = new AutherComparator();
} else if (sortBy.equals("bookname")) {
comparator = new BookNameComparator();
}
Collections.sort(list, comparator);
return list;
}}
比较器
interface SortingComparator extends Comparator<Book> {}
class AutherComparator implements SortingComparator {
@Override
public int compare(Book b1, Book b2) {
return (b1.getAutherName().toUpperCase()).compareTo((b2.getAutherName().toUpperCase()));
}
}
class BookNameComparator implements Comparator<Book>,SortingComparator {
@Override
public int compare(Book b1, Book b2) {
return (b1.getBookName().toUpperCase()).compareTo((b2.getBookName().toUpperCase()));
}}
主类
public static void main(String s[]) {
BookShelf bookShelf = new BookShelf();
bookShelf.addBook(new Book("Algorithm", "Toman", "12-34"));
bookShelf.addBook(new Book("DataBase", "Sethi", "12-35"));
bookShelf.addBook(new Book("DataStruture", "Ulman", "12-36"));
bookShelf.addBook(new Book("Network", "Tanenbom", "12-37"));
ArrayList<Book> list = bookShelf.bookList("auther");
System.out.println("----Sort by Auther-----------");
for (Book b : list) {
System.out.println(b);
}
System.out.println("----Sort by Book Name-----------");
list = bookShelf.bookList("bookname");
for (Book b : list) {
System.out.println(b);
}
}