TreeSet集合中的自然排序

题目要求:
编写一个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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值