我这儿有一个题目,编写书籍和图书馆之间的关系。public class Book {
private String isbn="";
private String author="";
private String title="";
public Book(String isbn,String author, String title){
this.isbn = isbn;
this.author = author;
this.title = title;
System.out.println(toString());
}
public String toString(){
return isbn+" "+author+" "+title;
}还有各个值的set,get方法都写了。
现在要求写一个Library类,其中有三个方法
public boolean sortedInsert(Book newbook){}
public Book searchISBN(String isbn){} public Collection searchAuthor(String autor){}Book类和Library类之间的关系应该用Set来实现,Set中的值要用Iterator读取。
但是Set不是只能单个值吗?应该用来保存ISBN还是索性用Set<Book>来表示,Set<Book>应该怎么使用,不知道哪位大哥能帮一下忙?万分感谢!
private String isbn="";
private String author="";
private String title="";
public Book(String isbn,String author, String title){
this.isbn = isbn;
this.author = author;
this.title = title;
System.out.println(toString());
}
public String toString(){
return isbn+" "+author+" "+title;
}还有各个值的set,get方法都写了。
现在要求写一个Library类,其中有三个方法
public boolean sortedInsert(Book newbook){}
public Book searchISBN(String isbn){} public Collection searchAuthor(String autor){}Book类和Library类之间的关系应该用Set来实现,Set中的值要用Iterator读取。
但是Set不是只能单个值吗?应该用来保存ISBN还是索性用Set<Book>来表示,Set<Book>应该怎么使用,不知道哪位大哥能帮一下忙?万分感谢!
for example
class Library {
//如果是数据库实体映射,那么自己定义多对一关系
//即多个book对应一个library
Set<Book> set = new TreeSet(new Comparator<Book>() {
public int compare(Book b1, Book b2) {
//自己定义排序方式
}
}); public boolean sortedInsert(Book newbook){
set.add(newbook);
} public Book searchISBN(String isbn){
for (Book b : set) {
if (b.getIsbn().equals(isbn)) {
return b;
}
}
return null;
} public Collection searchAuthor(String autor){
Set<Book> tmp = new HashSet<Book>();
for (Book b : set) {
if (b.getAuthor().equals(autor)) {
tmp.add(b);
}
}
return tmp;
}
}
国际标准书号由13位数字组成。前三位数字代表图书,中间的9个数字分为三组,分别表示组号、出版社号和书序号,最后一个数字是校验码。这个应该肯定是唯一的,
用SET, 判断是否是同一BOOK,, 应该也就是拿这个来,重写BOOK的 hashCode 方法, 返回ISBN, 但是13位对应9位(hashCode返回int, int最好形容9位).
想了下, 用MAP吧,
ISBN做KEY, BOOK做value
Map<String,String> map = new TreeMap<String,String>();
Iterator<Book> i = set.iterator();
while(i.hasNext()){
Book b = i.next();
map.put(b.getTitle(),b.getAuthor());
}
Set<Map.Entry<String,String>> entries = map.entrySet();
for(Map.Entry<String, String> e:entries)
System.out.println(e);
return map;
}