[英]Comparable interface homework
不太了解如何以要求的方式實施此操作。 這是問題
創建一個實現Comparable接口的Bike類。 您應該在Bike類中具有以下屬性,顏色,價格,制造商,型號和等級。 您應該根據它們的價格進行比較。 使用0.0001的公差值進行比較。 編寫一個主驅動程序,通過在控制台上收集信息的自行車來測試程序。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Program3 {
public static void main(String[] args) {
Bike b1 = new Bike(300,"red","schwin","mountain crusher",8.6);
Bike b2 = new Bike(500,"black","cassio","road dominator",12.5);
Bike b3 = new Bike(200,"blue","rolex","blue diamond",4.3);
Bike b4 = new Bike(1524500,"silver","military","spy bike",143.2);
List<Bike> bike = new ArrayList<Bike>();
bike.add(b1);
bike.add(b2);
bike.add(b3);
bike.add(b4);
System.out.println(bike);
Collections.sort(bike);
System.out.println(bike);
public class Bike {
private int price;
private String color,brand,model;
private double rating;
public Bike(int price, String color, String brand, String model, double rating) {
this.price=price;
this.color=color;
this.brand=brand;
this.model=model;
this.rating=rating;
}
}
Comparable
接口包含一個方法: compareTo()
。 此方法返回一個int
,該int
描述一個對象與另一個對象的比較方式。
它通常用於對將調用此方法的對象的集合進行排序,因為返回的int
的值將告訴調用方這兩個對象所屬的順序。
如果compareTo
方法返回負值,則調用該方法的對象位於用作參數的對象之前。 如果compareTo
返回一個正數,則調用該方法的對象位於該對象之后。 如果compareTo
返回0,則將對象視為相等,並且順序無關緊要。
您的作業要求您實現Comparable
並重寫compareTo
方法,以便按其價格對Bike
類的對象進行排序。 給定bikeA
的價格為兩美元, bikeB
的價格為三美元, bikeC
的價格為三美元:
bikeA.compareTo(bikeB) //should return negative
bikeB.compareTo(bikeA) //should return positive
bikeC.compareTo(bikeB) //should return 0
好吧,首先,價格應該是兩倍,而評級應該是整數。 看來您倒退了。
但是,為了實現compareTo
,讓我們看一下被詢問的內容:
創建一個實現Comparable接口的Bike類。
這很簡單:只需將類聲明為public class Bike implements Comparable
。
您應該根據它們的價格進行比較。
所以? 如果您在理解compareTo
方法時遇到問題,可以采取以下措施:
將此對象與指定對象進行比較。 當此對象小於,等於或大於指定的對象時,返回負整數,零或正整數。
這是此方法應做的正式描述。
使用0.0001的公差值進行比較。
在這里您可能需要一些幫助。 double
值不精確,必須將其與非容忍度進行比較。 例如,因此,表達式0.1 == (0.2 - 0.1)
實際上計算為false
。 因此,您可以嘗試執行以下操作:
(0.1 - (0.2 - 0.1)) < 0.0001
在這里,我們只是求出差異是否小於一定數量。 0.0001
是公差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.