Похоже, он возвращает true только для строк ... я пытаюсь запустить приведенный ниже код
final HashSet<Car> carHashSet = new HashSet<Car>();
final Car c1 = new Car("black","ZX","deisel");
final Car c2 = new Car("black","ZX","deisel");
carHashSet.add(c1);
if (carHashSet.contains(c2))
System.out.println("has c2 obj");
else
System.out.println("dont have C2 obj");
final HashSet<String> stringHashSet = new HashSet<String>();
final String k1 = "test";
final String k2 = "test";//final String k2 = "Test";
stringHashSet.add(k1);
if (stringHashSet.contains(k2))
System.out.println("has k2 obj");
else
System.out.println("dont have k2 obj");
вывод такой, как показано ниже:
нет C2 obj имеет k2 obj
когда я изменяю k2 на окончательный String k2 = "Test"; вывод:
не имеет C2 obj не имеет k2 obj