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

  • 2
  • Недоступна
Мы тут решили собрать коллекцию котов, и составить для неё правильный КОТолог. В этой программке кто-то уже потрудился написать класс Cat с полем имя (name). Наша задача — создать коллекцию Map, и добавить в неё 10 котов. Для начала хватит. В качестве ключа, как вы, наверное, уже догадались, следует использовать имя кота.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (331)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Михаил Никитюк 8 уровень, Харьков
18 января, 20:22
for (String cat : cats) {
            catMap.put(cat, new Cat(cat));
читаю комментарии и все пишут new Cat, как будто один я это пропустил что так можно создавать новый объект, мне до этого момента было известно только
Сat cat = new Cat(cats[0]);
Anonymous #2352740 8 уровень, Казань
2 января, 14:35
Разъясните мне пожалуйста эту строку
return name != null ? name.toUpperCase() : null;
Ilia Fesenko 14 уровень
8 января, 00:28
Тернарный оператор, тот же самый if-else в народе. Базируется на - <логическое выражение> ? <выражение1> : <выражение2>. А именно если логическое выражение true, то выполняется выражение1, если false, то выражение 2. В этом случае - если имя не имеет значение null, то в имени будут сделаны все буквы большими и оно будет возвращено. Если же null, то возвращен будет null.
Anonymous #2352740 8 уровень, Казань
8 января, 08:01
Спасибо, помогли. Я знал про тернарный оператор, но мой мозг не понял name != null.
Dmitry B 12 уровень
20 декабря 2020, 13:42
Уж мы вчера котов душили, душили... Душили, душили... )))
Romanya 12 уровень, Санкт-Петербург
7 января, 09:21
Забавная отсылка) Правда я не думаю что здесь люди знакомы с творчеством Михаила Афанасьевича чтоб её понять)
Anonymous #2422103 10 уровень
30 ноября 2020, 05:30
А с какого такого лешего в HashMap не надо писать <какую нибудь шнягу> а можно оставить это пустым Map<String, Cat> map = new HashMap<>();
Ilia Fesenko 14 уровень
8 января, 00:13
Так задумано, якобы если ты указал в первой части, то можно не указывать во второй. Однако, часто на это ругаются всякие там JUnit тесты, например, если ты код загружаешь проверить автоматическим тестом на страницу универа у препода по программированию. В этом случае вполне рабочий код не будет работать. Правильно же указывать и там, и этам.
Виктор 16 уровень
27 ноября 2020, 11:24
Метод addCatsToMap() должен работать с массивами любой длины! А это значит, заполнение map только через цикл. Вручную не прокатит! Трудно было сразу оговорить этот момент? Из текста задания это не очевидно.
Vyacheslav Kirichenko 8 уровень, Одесса
22 ноября 2020, 20:15
Добавить в коллекцию 10 котов, в качестве ключа использовать имя кота. А про value - ни слова! Ну вот я и поставил null и запорол 1ю попытку ¯\_(ツ)_/¯
AlexanderS 17 уровень
21 ноября 2020, 16:39
С первого раза валидатор не принял работающий код, полез в комменты и только там увидел, что в цикле заполнения map нельзя писать for(int i=0; i<10; i++) вместо этого надо писать for(int i=0; i<cats.length; i++) Но нигде в условиях задачи не написано об этом ограничении, наоборот, выделено жирным в условии "10 котов", так что очередные лучи "добра" в сторону составителя задачи. Будьте внимательны, граждане
Anton Palshyn 17 уровень, Могилев
25 октября 2020, 12:58
Всем привет. Объясните, пожалуйста, подробно вот эту строку:
map.put(cats[i], new Cat(cats[i]));
Почему именно такая запись?
Дмитрий 17 уровень, Москва
25 октября 2020, 19:37
Можешь для наглядности записать вот так Cat cat1 = new Cat(cats[i]); map.put(cats[i], cat1);
Anton Palshyn 17 уровень, Могилев
27 октября 2020, 19:29
Спасибо
Ильзира Балобанова 17 уровень, Казань
29 октября 2020, 11:20
В value наш HashMap принимает объект класса Cat, как раз-таки на месте value мы создаем этот объект, конструктор которого принимает имя кота, а имя мы получаем из массива cats
Акелла 16 уровень
29 октября 2020, 11:59
Нельзя просто взять и создать кота, так как в классе описан его конструктор с именем Cat(String name). А имена уже есть в массиве строк.
Oleg 15 уровень, Москва
7 октября 2020, 17:43
Почитав комментарии, приготовился долго решать. Но на удивление решил с первого раза.
Никита Никитенко Сыч в Сычевальне
4 октября 2020, 17:31
Что именно меня заставило побеситься: так это когда просили делать перебор не через обычный фор (или еще валидатор говорит что метод должен работать для неограниченного количества котов). Суть в том что перебор я пытался делать через Мэп, и в этом была ошибка. В переборе Мэп не может добавлять новые энтриз, только перезаписывать вэлью. (будет ошибка: Collection is always empty) Оказывается достаточно было сделать перебор по входящему массиву, а уже в теле цикла обратиться к ранее созданному Map<String, Cat> чтобы положить туда значения.
Ilia Fesenko 14 уровень
8 января, 00:31
map.forEach((e,y) -> System.out.println(e + " - " + y)); куда лучше чем ломать голову над форами))