我得到這個代碼:Java的比較類實例
public Class Car;
{
private String name;
public int number;
public Car(String name, int number)
{
this.name = name;
this.number = number;
}
// this class also got getters and setters
後來我有另一個類:
public class CarList
{
private Collection<Car> cars;
public CarList()
{
cars = new HashSet<>();
}
public boolean insertCar(Car car)
{
return cars.add(car);
}
然後碼連續用一些其他的方法,但它們都沒有問題。 如果我創建了Car
類的兩個實例,例如car1(mazda,1)
和car2(porsche,2)
,然後我調用方法insertCar
,則一切正常,方法返回true
,因爲有兩輛車具有不同的名稱和編號。
但是,如果創建例如car1(mazda,1)
然後car2(porsche,1)
方法返回true
儘管事實上,汽車的數量是相同的。
編輯:所以我的問題是如何強制方法返回false
當我嘗試''添加'具有相同的數字和相同的名稱的汽車(所以如何將@Override等於()方法改變)?
你需要實現Car.equals()和Car.hashCode( ) – iluxa
如果想要表示一個唯一的ident,我會試圖將「number」重命名爲「id」 ifier。 – pamphlet