题目要求:
编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。
import java.util.Iterator;
import java.util.TreeSet;
class Book implements Comparable<Book>{//comparable接口不用自己定义,直接用类去实现即可
private String name;
private double price;
public Book(String n,double p){//Boook的构造方法
name=n;
price=p;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int compareTo(Book a){//重写compareTo方法,实现按照价格的自然排序
int res=0;
if(price<a.price){
res=-1;
}
if(price>a.price){
res=1;
}
return res;
}
public String toString(){
return "<"+name+","+price+">";
}
}
public class Test3 {
public static void main(String[] args) {
TreeSet<Book> t=new TreeSet<Book>();//创建一个TreeSet集合t,(只有在TreeSet集合里才能实现自然排序)
t.add(new Book("目送",35));
t.add(new Book("海的女儿",25));
t.add(new Book("格林童话",20));
Book a=new Book("西游记",35);
//方法一:使用增强for循环输出
/*for(Book o:t){
Book m=o;
System.out.println(m.);
if(o.getPrice()==a.getPrice())
System.out.println(o.getName()+"与"+a.getName()+"价格相同"+","+"价格都为"+a.getPrice());
}*/
//使用迭代器
Iterator<Book> m=t.iterator();
while(m.hasNext()){
Book n=m.next();
System.out.println("《"+n.getName()+"》"+":"+n.getPrice());
if(n.getPrice()==a.getPrice())
System.out.println("《"+n.getName()+"》"+"与"+"《"+a.getName()+"》"+"价格相同"+","+"价格都为"+a.getPrice());
}
}
}
代码实现样例:
《格林童话》:20.0
《海的女儿》:25.0
《目送》:35.0
《目送》与《西游记》价格相同,价格都为35.0