1. 程式人生 > >TreeSet集合中的自然排序

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