/**
* @author 万星明
* @version 创建时间:2018年10月26日 下午3:36:46
* 类说明
[1] 创建书籍类,要求具备两个属性(书名+价格),正确编写其get、set方法,构造方法,重写toString方法
[2] 书籍类,要求其实现Comparable接口,并按照要求实现其compareTo方法(比较规则:先按照价格进行比较,从高到低进行排序,如果价格一样,再按书名进行比较,结果可参照下图)
*/
public class Book implements Comparable<Object>{
private String bookName;
private Double bookPrice;
@Override
public int compareTo(Object o) {
Book book=(Book) o;
//如果传来的书籍价格小于本书,则返回-1,放左边
if (this.bookPrice>book.getBookPrice()) {
return -1;
//否则放右边
}else if(this.bookPrice<book.getBookPrice()) {
return 1;
}else {
//如果价格相等,则返回书名排序,按字母顺序
return this.bookName.compareTo(book.getBookName());
}
}
@Override
public String toString() {
return "Book [bookName=" + bookName + ", bookPrice=" + bookPrice + "]";
}
public Book() {
}
public Book(String bookName, Double bookPrice) {
super();
this.bookName = bookName;
this.bookPrice = bookPrice;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Double getBookPrice() {
return bookPrice;
}
public void setBookPrice(Double bookPrice) {
this.bookPrice = bookPrice;
}
}
import java.util.Iterator;
import java.util.TreeSet;
/**
* @author 万星明
* @version 创建时间:2018年10月26日 下午3:35:42
* 类说明
二、采用Set对象来管理书籍信息,并根据业务规则对存放进来的书籍信息进行排序,具体程序的实现效果参照下图(共10分)
[1] 创建书籍类,要求具备两个属性(书名+价格),正确编写其get、set方法,构造方法,重写toString方法(2分)
[2] 书籍类,要求其实现Comparable接口,并按照要求实现其compareTo方法(比较规则:先按照价格进行比较,从高到低进行排序,如果价格一样,再按书名进行比较,结果可参照下图)(3分)
[3] 创建合适的Set对象,并按照要求的将书籍对象存放到Set对象中,插入的书籍数据要求与下图一致,并要求采用泛型约定Set集合存储的类型(2分)
[4] 正确采用泛型迭代器遍历Set集合,并要求输出结果顺序正确(3分)
*/
public class Test2 {
public static void main(String[] args) {
ergodic(start());
}
//[3] 创建合适的Set对象,并按照要求的将书籍对象存放到Set对象中,插入的书籍数据要求与下图一致,并要求采用泛型约定Set集合存储的类型
public static TreeSet<Book> start() {
//创建set集合
TreeSet<Book> bookSet = new TreeSet<Book>();
//创建四本书
Book book1 = new Book("AAA",199.0);
Book book2 = new Book("BBB",299.0);
Book book3 = new Book("CCC",399.0);
Book book4 = new Book("AAD",199.0);
//将书籍存入集合
bookSet.add(book1);
bookSet.add(book2);
bookSet.add(book3);
bookSet.add(book4);
//返回集合
return bookSet;
}
//[4] 正确采用泛型迭代器遍历Set集合,并要求输出结果顺序正确
public static void ergodic(TreeSet<Book> bookSet) {
//创建迭代器
Iterator<Book> it= bookSet.iterator();
//如果集合中有下一个元素则
while (it.hasNext()) {
//将元素取出
Book book = it.next();
//输出书籍的属性
System.out.println("书名:"+book.getBookName()+",价格:"+book.getBookPrice());
}
}
}