Здравствуйте. Задание заключается в том, чтобы добавить три элемента во множество HashSet
, затем удалить один элемент из него и вывести все это на экран. Создание и заполнение, удаление, вывод на печать реализуются в разных методах одного класса. У меня проблема в том, что в одном из методов, который создает и заполняет HashSet
, я не могу это множество использовать вместе с return
. В чем может быть проблема?
public class Solution {
public static void main(String[] args) {
Set<Cat> cats = createCats();
cats.remove(0);
printCats(cats);
}
public static Set<Cat> createCats() {
//напишите тут ваш код. step 2 - пункт 2
HashSet<Object> map = new HashSet<Object>();
for (int i = 0; i < 3; i++) {
Cat cat = new Cat();
map.add(cat);
}
return map;
}
public static void printCats(Set<Cat> cats) {
// step 4 - пункт 4
for (Object cat: cats) {
System.out.println(cat);
}
}
public static class Cat {
}
}
Remove должен получить обьект который нужно удалить а не его индекс
можно сделать так
public static void main(String[] args) {
Set<Cat> cats = createCats();
cats.remove(cats.iterator().next());
printCats(cats);
}
Cat
, то коллекции следует создавать данного типа, либо, если тип не важен, то использовать wildcard. Set.remove
принимает не индекс элемента, а сам элемент. НО: вариант cats.remove(cats.iterator().next())
выдаст ошибку при пустой коллеции. Я немного отрефакторил ваш код с учетом вышеназванных замечаний (+ использовал местами stream-ы - тут уже кому как больше нравится).
public static void main(String[] args) {
Set<Cat> cats = createCats(3);
removeFirst(cats);
printCats(cats);
}
public static Set<Cat> createCats(long size) {
return Stream.generate(Cat::new).limit(size).collect(Collectors.toSet());
}
public static void removeFirst(Set<?> cats){
Iterator<?> it = cats.iterator();
if (it.hasNext()) {
it.next();
it.remove();
}
}
public static void printCats(Set<?> cats) {
cats.forEach(System.out::println);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Для чего эти аннотации существуют понятно, но вот что будет если в главном классе по иерархии их не указать, просто пропустить?
В таблице в теге <td> я прописываю background="https://namecom/static/name/img/bg