Я пытаюсь вычесть значения одного списка из другого с помощью ListUtils.subtract (1,2), однако я заметил, что вычитание никогда не происходит, поэтому я продолжаю возвращать все элементы в 1. Я подумал, что это может указывать на проблему равенства, но мой хэш-код и метод equals в порядке. (Я думаю)
@Override
public boolean equals(Object o) {
if(!(o instanceof Car))
return false;
Car ct = (Car) o;
return this.getManufacturer().equals(ct.getManufacturer())
&& this.getImmat().equals(ct.getImmat())
&& this.getModel().equals(ct.getModel());
}
@Override
public int hashCode() {
int hash = 5;
hash = 71 * hash + (this.model != null ? this.model.hashCode() : 0);
hash = 71 * hash + (this.immat != null ? this.immat.hashCode() : 0);
hash = 71 * hash + (this.manufacturer != null ? this.manufacturer.hashCode() : 0);
return hash;
}
Код, который выполняет вычитание:
List <Car> affected = new LinkedList<Car>();
for(Driver c : tmp)
affected.add(c.getCar());
List <Car> allcars = carDAO.findAllCars("order by model");//returns every car
List<Car> cars = ListUtils.subtract(allcars, affected );
return cars;
Я проверил оба списка, и они в порядке, однако я не могу заставить ListUtils вычесть затронутые из allcars (возвращает набор allcars), что заставляет меня думать, что метод equals по какой-то причине может быть неправильным.