容器方面的题目

szlxq27 2011-06-08 11:33:07
我这儿有一个题目,编写书籍和图书馆之间的关系。

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>应该怎么使用,不知道哪位大哥能帮一下忙?

万分感谢!
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
szlxq27 2011-06-09
  • 打赏
  • 举报
回复
我本来是想用作者做Key,书名做value来进行输出的,不过这个东西刚开始看,还不是很熟悉。
szlxq27 2011-06-09
  • 打赏
  • 举报
回复
多谢阿宝的帮助。我排序是用了
 b1.getISBN().compareTo(b2.getISBN())
,通过ISBN排序。不过我还是有一点不太清楚,为什么在这儿要用到
new Comparator<Book>()
? 一般是在什么情况下用到这个的?
仲兴轩 2011-06-09
  • 打赏
  • 举报
回复
ISBN又称国际标准书号,

国际标准书号的组成
  国际标准书号由13位数字组成。前三位数字代表图书,中间的9个数字分为三组,分别表示组号、出版社号和书序号,最后一个数字是校验码。

这个应该肯定是唯一的,
用SET, 判断是否是同一BOOK,, 应该也就是拿这个来,

重写BOOK的 hashCode 方法, 返回ISBN, 但是13位对应9位(hashCode返回int, int最好形容9位).


想了下, 用MAP吧,
ISBN做KEY, BOOK做value


qybao 2011-06-09
  • 打赏
  • 举报
回复
用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;
}
}
szlxq27 2011-06-09
  • 打赏
  • 举报
回复
写了一个以书名为key, 作者为value的Map程序

public Map<String, String> stockByAuthor(){
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;
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧