Множество всех животных

  • 10
  • Недоступна
Занесем животных в множества. Сначала создадим классы Cat и Dog, затем — методы createCats и createDogs (возвращают множества с собаками и кошками), метод join, возвращающий конгломерат из множеств собак и кошек. На случай недобрососедства — метод removeCats, удаляющий из pets котов. И ещё — метод printPets, пусть выводит на экран всех обитателей pets.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (145)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Alexander Polovnev8 уровень
9 часов назад
Наконец-то я сам сделал через лямбду удаление лишних котов, ура! pets.removeIf(x -> (cats.contains(x)));
Артём Кравченко9 уровень, Таганрог
суббота, 14:18
Сперва решил с итераторами, а затем при помощи методов addAll() и removeAll(); Кстати, при создании множества pets в него сразу можно запихнуть множество cats в качестве параметра
Set<Object> pets = new HashSet<>(cats);
Юрий12 уровень, Кишинёв
9 февраля, 10:46
Наконец-то решена задачка полностью без подсказок. Правда, удаление Cat описал сам: 1) forrech для котов 2) затем iterator для pets 3) if (iterator.next().equals(catsNum)){ iterator.remove(); } Может кому и пригодится
Vad9 уровень
позавчера, 23:47
Можно без итератора: for(Cat c : cats) if(pets.contains(c)) pets.remove(c);
Anton Domashevskiy11 уровень, Mlawa
15 января, 19:02
я иногда в бешенстве от проверки задач.... потратил 3 часа что бы нор код запилить, что бы все работало с любим количеством объектов.... Отладчиком все проверил.... а он сне говорит хрен тебе! только pets.removeAll(cats); ему подходит и больше не как это не решить.... пойду пива бахну....
Pavel Titov9 уровень
1 февраля, 13:19
Блин реально... ну емае а
Никита Сычев17 уровень, Санкт-Петербург
15 января, 09:38
Да....Через методы "Коллекции" делается все как "2 пальца об освальт". Пробовал так: Iterator <Object> iterator=pets.iterator(); while(iterator.hasNext()){ if(iterator.next() instanceof Cat) iterator.remove(); Программа реально работала, но ВАЛИДАТОР не принимал. Подскажите кто ни будь есть логичное объяснение?
Grach9 уровень
27 декабря 2019, 17:56
Удалять всех котов следующим образом: pets.removeAll(cats);
Asad Vice19 уровень, Минск
15 декабря 2019, 12:18
находишь пару красивых строчек для решения, тестишь, вроде всё работает, отдаешь на проверку валидатору, ожидаешь биться палками по спине и танцами с бубном, но нет. Всё работает. Чудо дивное.
Kristina Voronova18 уровень, Москва
9 декабря 2019, 15:15
Collection.addAll создаст вам внутр два HashSet A Set.addAll нормально добавит все в один HashSet
pets.addAll(dogs);
pets.addAll(cats);
Anatoliy10 уровень, Печора
7 декабря 2019, 14:55
Все в принципе прописано в задаче в методах во входных "параметрах",что куда и откуда берется, в методе removeCats сделал копию pets и два цикла с "котами" и с копией,соответственно внутри них(циклов) удаляется все без проблем).Задача на последовательность действий:создание объектов,заполнение множеств,их так сказать слияние,переборку и удаление.
Фантомас19 уровень, Киев
27 ноября 2019, 16:09
Про методы removeAll() и addAll() уже многие тут написали, но решил добавить еще примеров по соединению двух Set'ов. Так вот, есть несколько интересных вариантов: 1)
return Stream.concat(cats.stream(), dogs.stream())
                .collect(Collectors.toSet());
2)
return Stream.of(cats, dogs)
            .flatMap(x -> x.stream())
            .collect(Collectors.toSet());
3)
Set<Object> mergedSet = new HashSet<>();
Stream.of(cats, dogs).forEach(mergedSet::addAll);
return mergedSet;
4)
Set<Object> mergedSet = new HashSet<>();
Collections.addAll(mergedSet, cats.toArray(new Object[0]));
Collections.addAll(mergedSet, dogs.toArray(new Object[0]));
return mergedSet;
Interstellar20 уровень, Воронеж
10 января, 07:17
Круто, спасибо!
Никита Сычев17 уровень, Санкт-Петербург
15 января, 09:42
У меня вопрос. Фантомас, ты за полтора месяца 9 уровней качнул? Или просто вернулся к данной задаче по ходу обучения? Довольно много учеников с большим уровнем(для меня на данный момент) пишет отличные комменты.... Для чего??....Праздный интерес.
Максим Толстобров19 уровень, Москва
15 января, 19:12
У меня есть для тебя 2 ответа. 1. Все очень просто, тут в javaRush много программистов например с++ или с# и других языков, которые хотят изучить java. Для них некоторые вещи более просто даются и знания они умеют получать. 2. Есть такие люди (как я например), которые не идут глава за главой, а дойдя до главы, прочитают теорию, потом три видео курса, потом книгу, потом напишут три приложения с подобным функционалом и только потом переходят к следующей главе. JavaRush не дает всей теории, ты вероятнее всего с этим уже столкнулся, поэтому тебе придется искать теорию самому. И вот фантомас нашел теорию из разряда уровня 30 javaRush. З.ы. Чем дальше будешь доходить в javaRush, тем больше более простых решений для задач низкого уровня ты будешь находить. Грубо говоря в циклах можно было решать задачи через коллекции, и все было бы гораздо компактнее или даже проще.
Фантомас19 уровень, Киев
16 января, 09:22
Если есть достаточно времени, то вполне возможно и даже без предыдущих знаний в программировании. Просто кроме Javarush, надо параллельно годные видео смотреть и хорошую книгу по Java читать. Тогда должно пойти всё быстрее.
Никита Сычев17 уровень, Санкт-Петербург
17 января, 20:58
Люблю Этот мир)) Москва!!! и Киев!!! Хорошего настроения!!!!