Метод contains ArrayList
В меня такие задачи.
В двух ArrayLists, каждый из которых содержит по 3 объекты класса Car, в свою очередь, содержит поля String model, String owner, int price, int produceYear, определить факт наличия в коллекциях автомобилей владельца "Serg". Задача определить двумя способами - с помощью метода contains класса ArrayList и с помощью других произвольных методов.
Почему везде выдает true?
Car car1 = new Car("BMW X5","Oleg",9999,2018);
Car car2 = new Car("BMW X4","Serg",12313,2017);
Car car3 = new Car("BMW X3","Arsen",31231,2015);
Car car4 = new Car("VOLGA ","Petro",3123132,2009);
Car car5 = new Car("Mercedes-Benz","Serg",999999,2014);
Car car6 = new Car("BMW X3","Vitalii",123131,2015);
List<Car> cars1 = new ArrayList<>();
cars1.add(car1);
cars1.add(car2);
cars1.add(car3);
List<Car> cars2 = new ArrayList<>();
cars2.add(car4);
cars2.add(car5);
cars2.add(car6);
for (Car car : cars2) {
System.out.println(cars2.contains(car));
}
}
class Car{
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Car)) return false;
Car car = (Car) o;
return owner.equals(car.owner);
}
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Вы перебираете элементы списка cars2 и проверяете, содержится ли каждый из них в списке cars2. Ответ, наверное, будет "да" для каждого элемента списка.
for (Car car : cars2) {
if ("Serg".equals(car.owner)) {
System.out.println("cars2 contains a car owned by Serg");
break;
}
}