键盘输入3本书按照价格从低到高排序后输出,如果价格相同则按照书名的自然顺序排序;
要求:
1:书以对象形式存在,包含书名和价格(int类型)两个属性;
2:要求即使直接打印书对象的时候,也能看到书的名称和价格,而不是书对象的地址值;
3:分别使用自然排序和比较器排序实现效果;
在这里插入图片描述
TreeSet list = new TreeSet<>(new Comparator() {
@Override
public int compare(Book o1, Book o2) {
int result = o1.getPrice() - o2.getPrice();
return result;
}
});
Scanner sc = new Scanner(System.in);
int i = 1;
try {
while (true) {
Book book = new Book();
String s = null;
int p = 0;
System.out.println("请输入第" + i + "本书的名称:");
s = sc.next();
System.out.println("请输入第" + i + "本书的价格(整数):");
p = sc.nextInt();
book.setTitle(s);
book.setPrice(p);
list.add(book);
i++;
System.out.println("添加" + book.getTitle() + ",书已经成功,继续添加请输入1,输入其他字符结束");
int a = sc.nextInt();
if (a != 1) {
break;
}
}
} catch (Exception e) {
System.out.println("输入格式错误");
sc = new Scanner(System.in);
}
System.out.println("您一个添加了:3本书,分别是:");
for (Book book1 : list) {
System.out.println(book1);
}
}
}
public class Book implements Comparable {
private String title;
private int price;
public Book() {
}
public Book(String title, int price) {
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", price=" + price +
'}';
}
@Override
public int compareTo(Book o) {
int result = this.getPrice()-o.getPrice();
result =result==0?getTitle().compareTo(o.getTitle()):result;
return result;
}
}