Java 容器编程题请教~急~

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:37:04
考虑下列的信息系统。出版社需要记录下列书籍和作者的信息:
P1: 每一本书有一个title,一个description和一个ISDN number 还有 出版的日期(包括年/月)
P2: 每一本书有1个或多个作者。
P3: 每一个作者有一个名字、一个description,一个生日、还有电话信息和Email Address
P4: 一个作者可以是很多本书的作者也可能没有出书

1结合i/o包在DOS窗口具有添加作者和书籍的功能。
2具有查询一本书所有作者基本信息的功能。包括我只想查某一个属性
3具有查询一个作者所有书目的功能
4 具有对所有书目按客户指定类型排序的功能
5 具有对所有作者按客户指定类型排序的功能
要求:
a method Book.toString() 这个方法写出所有书的具体信息(包括作者名字)
a method Author.toString() 这个方法写出所有作者信息和其编著的所有书的功能
选用适当的容器类并简述选用理由。对一些基本信息采用面向对象的编程方式。而不是基本类型。

这个不是很难,你建一个叫做Book的类,类里有哪些field你自己清楚咯,你这里要求排序,那么我推荐你使用java.util.*里的TreeSet类,你不断地添加元素,然后通过他的迭代器打出来,可以看到原来乱序插入的书本you了顺序,这个就是自动排序。
而且使用这个类,所哟的操作都是o(logn)的,效率相当好,不知你有美哟自己编过binarySearchTree,这个就是二叉搜索树.
我举个例子
TreeSet set = new TreeSet();
set.add(1);
set.add(3);
set.add(2);

//print the set
for(Iterator itr = set.iterator;itr.hasNext()){
System.out.println(itr.next() + " ");
}
会打印1,2,3,顺序是排好的

这个类you一个比较难用的地方,不过也正好迎合了你题目的要求,通过查看这个类的源代码,发现add方法会发现填入的每个对象都必须实现Comparable接口,也就是你要重载compareTo方法,如果书要求按署名排序,这个方法这么写
public class book implements Comparable{
String name;
String author;
double price;
//constructors here
//getters and setters
public int compareTo(Object o)
{
return this.getName().compareTo(((Book)o).getName());

注意,java的所有包装类和String都实现了Comparable接口

还详细吧,打得我累死了
不懂我帮你做
}
}