编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等:
Book类:
package compareBook;
public class Book implements Comparable{
String name;
int price;
Book(String n,int p){ //构造方法
name=n;
price=p;
}
@Override
public int compareTo(Object book1) { //重写接口中的方法
//Book book2 = new Book("java",20);
Book book = (Book) book1; //将book1强制类型转换为Book类型
return this.price-book.price;//当前与传入的book1的价格做差
}
}
test:
package compareBook;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class test {
public static void main(String[] args) {
List<Book> list = new LinkedList<Book>(); //用链表做集合
list.add(new Book("Java",20)); //将几本书加入到链表中
list.add(new Book("c",30));
list.add(new Book("c++",20));
list.add(new Book("Databook",24));
list.add(new Book("AE",30));
Book b = new Book("Photoshop",20);
Iterator<Book> it =list.iterator(); //为链表添加迭代器
System.out.println("新书"+b.name+"与下列图书:");
while(it.hasNext()){ //只要链表中还有数据就执行循环
Book bk =it.next(); //数据取出赋给bk
if(b.compareTo(bk)==0) //将新书b与表中所有的书进行比较,价格之差为0即相等,则输出
System.out.println(bk.name);;
}
System.out.println("具体价格为:"+b.price);
}
}
运行结果: