Задача решена, но осталось не понятное. Нужно удалить один любой элемент массива.
Изначально пробовала сделать это cats.remove(cat1); почему так делать нельзя?
public class Solution {
public static void main(String[] args) {
Set<Cat> cats = createCats();
cats.remove(cats.toArray()[0]);
printCats(cats);
}
public static Set<Cat> createCats() {
Set<Cat> cats = new HashSet<Cat>();
Cat cat1 = new Cat();
cats.add(cat1);
Cat cat2 = new Cat();
cats.add(cat2);
Cat cat3 = new Cat();
cats.add(cat3);
return cats;
}
public static void printCats(Set<Cat> cats) {
for (Cat cat : cats){
System.out.println(cat);
}
}
public static class Cat{
}
}
Polina
29 уровень
не понятен метод удаления объекта из массива
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Polina
10 октября 2018, 15:54
спасибо!
0
Evghenii
10 октября 2018, 14:01полезный
cats.remove(cat1); нельзя удалить т к main его невидит,т е нет ссылки на него,так сделать можно было бы,если бы ты через итератор сделала.
и ты усложняешь,например с Setом можно проще работать
public static Set<Cat> createCats() {
HashSet<Cat> hashSet = new HashSet<>();
hashSet.add(new Cat());
hashSet.add(new Cat());
hashSet.add(new Cat());
return hashSet;
}
т у сразу создаешь новых котов и добавляешь их
+1
Ray
7 октября 2018, 00:17полезный
Изначально ты хотела удалить конкретный объект cat1, но не смогла, так как не имела на него ссылки, чтобы получить такую ссылку тебе нужно перебрать всех котов в коллекции ( в твоем коде это даже реализовано в методе printCats.
+1
Polina
7 октября 2018, 19:17
то есть можно было написать так:
Set<Cat> catsCopy = new HashSet<Cat>(cats);
for (Cat cat : catsCopy) {
if (cat.equals(cat1)) {
cats.remove(cat)?
или нельзя так делать?
0