【问题描述】编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。
代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
class Book implements Comparable<Book> {
String name;
double price;
public Book(String name,double price){
this.name=name;
this.price=price;
}
public int compareTo(Book b) {
return (int)(this.price-b.price);
}
}
public class TestBook{
public static void main(String[] s) {
String str;
System.out.println("input several Book,in the end #");
Scanner in = new Scanner(System.in);
ArrayList<Book>list=new ArrayList<Book>();
//可修改动态数组,类型为Book
while(true) { //无限循环
str=in.nextLine();
if("#".equals(str)) {
break; //"#"结束循环
}
String[] info=str.split(",");
String name=info[0];
double price=Double.parseDouble(info[1]);
list.add(new Book(name,price));
}
//获取迭代器
Iterator<Book>it=list.iterator();
System.out.println("input a new Book:");
str=in.nextLine();
String[] info=str.split(",");
String name=info[0];
double price=Double.parseDouble(info[1]);
Book book=new Book(name,price);
System.out.println("new book:<"+name+">as same books");
while(it.hasNext()) { //当前集合还有元素
Book b=it.next();
if(book.price==b.price) {
System.out.println(b.name+","+b.price);
}
}
}
}