public class Car
{
    private String name;  
    public int id;     
    public Car(String name, int id) 
    {
        this.name = name;
        this.id = id;
    }
@Override
public boolean equals(Object ob) 
{
    if (!(ob instanceof Car))
    {    
      return false;
    }
 Car that = (Car)ob;
 return this.id == that.id;
}
@Override
public int hashCode() 
{
    return id;
}
// this class also got getters and setters 
Then I got another class
public class CarList
{
        private Collection<Car> cars;
    public CarList()
    {
        cars = new HashSet<>();
    }
   public boolean insertCar(Car car)
    {
        return cars.add(car); 
    }
My question is: How to properly override equals() and hashCode() method, where I consider 'id' and 'name' attribute for object comparsion and hashCode calculation ( so there is no possibility to have 2 objects with the same name and ID - because in this code as it is - it only takes 'id' attribute for object comparsion)?
 
     
    