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

猜你喜欢

转载自blog.csdn.net/qq_43747311/article/details/84830842
今日推荐