Задача: 1) создать множество cats; 2) в методе createCats() создать 3 кота и присвоить их множеству cats; 3) удалить одного кота из множества cats в методе main; 4) вывести остальных котов на экран методом printCats.
Я долго не мог удалить кота в методе main. Как я только не писал (cats.remove(barsic); cats.remove(1); cats.remove(next()); пытался создать итератор и через него удалить, но тоже как-то накосячил и ничего путнего не вышло) и вдруг мне подсказали написать
cats.remove(cats.iterator().next());
Всё заработало, но я абсолютно не понял КАК это всё заработало. Итератор не создавали да и сама конструкция подозрительная =)
Уважаемые знатоки, объясните что и как тут происходит или дайте, пожалуйста, ссылочку на ресурс
public class Solution {
public static void main(String[] args) {
Set<Cat> cats = createCats();
//напишите тут ваш код. step 3 - пункт 3
cats.remove(cats.iterator().next());
printCats(cats);
}
public static Set<Cat> createCats() {
//напишите тут ваш код. step 2 - пункт 2
Set<Cat> cat = new HashSet<>();
Cat barsik = new Cat();
Cat tima = new Cat();
Cat murzik = new Cat();
cat.add(barsik);
cat.add(tima);
cat.add(murzik);
return cat;
}
public static void printCats(Set<Cat> cats) {
// step 4 - пункт 4
for (Cat c: cats) {
System.out.println(c);
}
}
// step 1 - пункт 1
public static class Cat{
}
}
Удалить через cats.remove(barsic) нельзя, потому что barsic - это название переменной, которая была объявлена в другом методе, а это другой неймспейс. Через cats.remove(1) нельзя удалить, потому что нужно передавать объект, а не примитив, а индексов у HashSet нет, так как он работает по принципам хэширования и не может быть упорядоченным и индексы тут не применимы. А вариант cats.remove(cats.iterator().next()) сработал потому что в методе ты берешь итератор сэта, вызываешь у этого итератора метод next(), и этот метод возвращает тебе объект, который находится в этом сэте и уже его ты удаляешь.
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
столкнулся с задачейМне нужен создать трансляцию и вести её через Java
Want to improve this question? Update the question so it focuses on one problem only by editing this post