1. В общем, в данной задаче в Класс "Cat" добавил конструктор, а также поле для создания объекта:
public static class Cat{
private String name;
public Cat(String name){
this.name = name;
}
2. Далее, в методе создания создал 3 кота:
Cat cat1 = new Cat("Tom");
Cat cat2 = new Cat("Jerry");
Cat cat3 = new Cat("Kot3");
cats.add(cat1);
cats.add(cat2);
cats.add(cat3);
return cats;
3. В "main" удаляю конкретного кота и делаю метод вывода, но кот не удаляется, а выводятся все. Объясните, пожалуйста, где ошибка.
Set <Cat> cats = createCats();
cats.remove("Tom");
//cats.remove("cat1");
printNames(cats);
--
Метод вывода:
public static void printNames(Set <Cat> cats){
for(Cat cat : cats){
System.out.println(cat.name);
}
}
Alex D.
17 уровень
Почему не удаляется "объект".
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
24 марта 2020, 11:46
ты говоришь программе:
эй, сет котов! Удали из себя объект типа String == "Tom", set у себя смотрит-смотрит, ничего такого не нашел и ничего не сделал.
"Том" это строковый литерал, объект типа стринг.
А удалять тебе нужно объект типа кота.
то есть, если cat.name == "Tom", то этого cat нужно удалить
Или по другому, есть Set<Student> students, у каждого студента Имя, Возраст и тд.
ты не можешь написать вот так:
чтобы оно удалило студента, которому 45 лет.
метод remove() принимает объект, который нужно найти, и если он есть то он этот объект удалит.
Объект должен быть такого же типа, как и тип элементов, который сет хранит.
45 это интеджер.
Сет хранит студентов.
+3
Alex D.
24 марта 2020, 11:56
Спасибо большое! Разобрался и сделал уже:
[code]
for(Cat cat : cats){
if(cat.name == "Tom") cats.remove(cat);
}
printNames(cats);
[/code]
Вроде головой и понимал что удалял не объект, а конкретную "строку", но кукуха не доехала до конца)
В любом случаи - спасибо =)
+1