TreeSet集合中的自然排序
阿新 • • 發佈:2018-12-05
題目要求:
編寫一個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