Коллекция Map из котов

  • 5
  • Недоступна
Мы тут решили собрать коллекцию котов, и составить для неё правильный КОТолог. В этой программке кто-то уже потрудился написать класс Cat с полем имя (name). Наша задача — создать коллекцию Map, и добавить в неё 10 котов. Для начала хватит. В качестве ключа, как вы, наверное, уже догадались, следует использовать имя кота.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (214)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Badger8 уровень, Киев
10 января, 17:12
Дописал имя кота "гарфи" --> "гарфилд" И валидатор не пропустил по последнему условию, но т.к. в коде был уверен, вернул имя обратно и вуаля...
18 декабря 2019, 09:40
задача чрезвычайно простая, просто условие опять было сформулировано через шею жирафа public static Map<String, Cat> addCatsToMap(String[] cats) это строчка из условия, где сразу видно, что коллекция содержит в себе как Стринг так и Cat (что само по себе говорит, что значение Value должно быть котом (а точнее новым котом), но тут вопрос, каким же это новым котом , если в условии сказано , что за ключ нужно брать имя кота, то есть cats[i], а что же тогда брать в value мммм ? , по сути должен был бы пропускать просто с new cat(" ")), но новый кот тоже оказывается должен быть cats[i], только понять это вы должны были из строчки override ну и раскидать бобов не много , чтобы погадать , так ли это или нет , Одна строчка кода господа в массиве, не нужно не каких переводов в сет и так далее
Asad Vice10 уровень, Минск
13 декабря 2019, 18:34
Для таких же танкистов, как и я: имя(String) из массива достать мы можем, но старого кота не копайте, пусть сидит там в массиве. Создайте нового и посадите в мапу, только имя от него старое будет.
Niang8 уровень
8 января, 05:19
Никаких старых котов и нет вовсе. Изначально даны только имена котов (массив строк), из этих имен мы сами должны создать котов и добавить этих котов в Map.
Андрей Киров16 уровень
10 декабря 2019, 05:12
Чёт туплю..
for(int i=0;i<cats.length;i++){
            Cat cat1 = new Cat(cats[i]);
            map.put(cats[i],cat1);
       }
Помогите пожалуйста! А что случается с экземпляром cat1 по завершении цикла? Если он уничтожается, то что хранится в коллекции? А если нет, то как могут существовать множество объектов cat1?
Андрей8 уровень
21 декабря 2019, 07:50
Присоединяюсь к вопросу. Тоже когда сделал этого не понял. Куча объектов с одинаковым именем.
Роман Дерябин10 уровень, Омск
21 декабря 2019, 19:34
У вас не один и тот же объект. cat1 это всего лишь ссылка на объект. Всего лишь пульт управления объектом, а сам объект это у вас new Cat("значение"). Ссылка cat1 создается каждый раз заного входя в цикл, а дальше в этом методе
map.put(cats[i],cat1);
вы копируете значение этой ссылки (То есть объект) и отправлете его в метод. Закоментируй переопределение метода toString и ты увидишь что для каждого объекта отдельная ячейка памяти. Попробуй поиграться с этой задачей и например задавать значения объектам в виде цвета. НАпример если i % == 0, то белый, а если нет, то черный и ты увидишь, что со всеми объектами ты работаешь отдельно. В добавок можешь почитать еще раз лекцию про обхъекты, про параметры и про передачу параметров в java https://javarush.ru/groups/posts/857-peredacha-parametrov-v-java. Коллеги, поправьте меня если я не прав)
Lui Stefaniuk8 уровень, Paris
28 декабря 2019, 11:25
Спасибо за ссылку, а то не понимал как это работает, исейчас не до конца разобрался но хотя бы понял что здесь сделал
Антон8 уровень, Казань
29 декабря 2019, 08:34
Можно было записать в одну строчку и не создавать каждый раз ссылку cat1. Может так понятнее будет. map.put(cats[i], new Cat(cats[i])); В первом аргументе присваиваете ключу имя кота, во втором - в мапу помещаете вновь созданного кота, в конструкторе которого передается имя.
Иван15 уровень, Екатеринбург
20 ноября 2019, 07:16
Не такая сложная, как её молюют. Главное четко понимать, куда чего в каком формате передается.
Антоний9 уровень, Москва
16 ноября 2019, 17:27
Афигеть, в Cat нельзя передать рандомное значение, только то, что мы получаем из cats. То есть верный вариант это: борис - БОРИС При этом валидатор писал что "ничего не добавлено из массива cats" и другую хрень которая сбивает с толку!
Zurab10 уровень, Киев
15 ноября 2019, 00:06
Жесть, сделал с первого раза, даже понял что сделал, без этого обсуждения сидел бы гораздо больше и не факто, что понял бы.
Anna9 уровень, Москва
28 ноября 2019, 20:26
Тоже сделала с первого раза, реально на чуйке какой-то. Кто попросит объяснить - не смогу)))
Roman Doroshenko16 уровень, Гомель
12 ноября 2019, 20:44
Решил. И даже с первого раза. Но это не радует. Потому что решение лежало как то между методом тыка и интуицией. Ну ничего, буду разбираться дальше.
Bender16 уровень, Калуга
4 ноября 2019, 14:49
Думаю стоит в описании задания показать пример хотя бы одной строки выводимой на экран чтобы было понятно что по сути строки выводимые на экран одинаковые и отличаются лишь регистром .
GigaMax12 уровень, Пермь
30 октября 2019, 21:30
Решил задачу переводом массива String[] cats в Set и вставил в Map