JavaRush /Курсы /Java Syntax /Что нам делать с Set и Map?

Что нам делать с Set и Map?

Java Syntax
8 уровень , 7 лекция
Открыта

— Ты ещё не устал? Тогда продолжим. Хочу поподробнее рассказать тебе, что такое Set и Map. И какие у них есть операции.

Set – это множество – куча ненумерованных объектов. Главная особенность Set – в нем только уникальные объекты, т.е. они все разныe. Вот что с ним можно делать:

Операция Метод
Добавлять элемент(ы) add(), addAll()
Удалять элемент(ы) remove(), removeAll()
Проверять, есть ли элемент(ы) contains(), containsAll()

— И это все?

— Собственно говоря, да. Ещё можно узнать количество элементов с помощью метода size().

— А что насчёт Map?

Map – это множество пар. То же множество, но не одиноких элементов, а пар: ключ-значение. Единственное ограничение: первый объект в паре, называемый ключом, должен быть уникальным. В Map не может содержаться две пары с одинаковыми ключами.

— Вот что мы можем делать с Map:

Операция Метод
Получить множество всех пар entrySet()
Получить множество всех ключей keySet()
Получить множество всех значений values()
Добавить пару put(key, value)
Получить значение по ключу get(key)
Проверить наличие «ключа» containsKey(key)
Проверить наличие «значения» containsValue(value)
Проверить что Map — пустой isEmpty()
Очистить Map clear()
Удалить элемент по ключу remove(key)

— Вот это гораздо интереснее, чем set.

— Да, Map хоть не так популярен, как список, но используется во многих задачах.

8
Задача
Java Syntax Pro, 8 уровень, 7 лекция
Недоступна
Простое наследование
Построй правильную цепочку наследования классов. Женщина должна наследоваться от человека, а человек от землянина.
8
Задача
Java Syntax Pro, 8 уровень, 7 лекция
Недоступна
Наследование переменных
Правильно унаследуй классы: - машину — от транспортного средства; - электрокар — от машины. Удали дублирующиеся переменные.
8
Задача
Java Syntax Pro, 8 уровень, 7 лекция
Недоступна
Наследование методов
Правильно унаследуй классы: - человека — от существа; - Java-девелопера — от человека. Удали дублирующие методы.
Комментарии (174)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
AMIGO_2022_11_09 Уровень 17
19 ноября 2022
Сделал мегатрона, можно и отдохнуть!
Dinislam Aminev Уровень 16 Expert
1 февраля 2023
Я на уровне 7-м перестал их получать...
AMIGO_2022_11_09 Уровень 17
4 февраля 2023
Согласен, решить подряд кучу задач по новому материалу очень непросто! Но вы можете схитрить, открыть лекции, изучить их, потом выбрать день когда много свободно времени и разом навернуть 20 задач!
Timur Khasmamedov Уровень 14 Expert
14 февраля 2023
Ну, это не продуктивно имхо. Лучше чтобы больше и качественной уложилось в голове (даже если знаешь), качество >> скорость.
Anonymous #2931973 Уровень 24
15 февраля 2022
Не получилось вставить сразу весь коментарий
Anonymous #2931973 Уровень 24
15 февраля 2022
Конечно, Вы открыто говорите о том, что вместе с работой на этой онлайн-платформе необходимо работать с учебниками. Кроме этого Вы хотите научить людей работать в реальных условиях, сразу на этапе обучения, то есть научить гуглить. Это очень хорошая идея. Но с другой стороны, Вы позиционируете ваш курс как обучение программированию на Java с нуля и до хорошего уровня. Мне кажется, когда Вы берете на себя такую ответственность, то необходимо проработать подачу материала в лекциях, чтобы у обучаемых сформировался структурированный, системный «костяк» теоретического материла. На мой взгляд, это и является залогом успешного обучения. Ведь Java, как и некоторые другие языки программирования, имеют большой «входной порог» теоретического материала для того, чтобы начать писать хоть какие-то программы. А вот нарастить на этот «костяк» «мясо» можно как раз через «поисковики» и ваши статьи, которые очень хорошо написаны, на высоком уровне. Необходимо отметить, что как раз статьи вашего сайта, являются одними из самых лучших в интернете, если на самыми лучшими.
6 мая 2022
Более академическое и методическое изучение языка стоит других денег, этак раз в 10 дороже, чем предлагает JavaRush. И курсом от 10 месяцев до года. Площадок много, найти их легко.
Anonymous #2931973 Уровень 24
9 мая 2022
Соглашусь, однако здесь не предупреждают об этом. Я же писал: "...Но с другой стороны, Вы позиционируете ваш курс как обучение программированию на Java с нуля и до хорошего уровня...". Про рекламу курсов мы же не должны забывать, мне так кажется. А также я писал: "...Мне кажется, когда Вы берете на себя такую ответственность, то необходимо проработать подачу материала в лекциях..." Хочу еще раз повторить свои слова. Я вовсе не против этого курса. Более того мне он очень нравиться. Здесь используется интересная подача материала в лекциях, крутая подборка практических заданий и т.д. То что здесь уже сделано - это титанический труд (мне такое, скажем, знакомо). Я лишь выражаю свои пожелания и только. С уважением Anonymous #2931973
Anonymous #2931973 Уровень 24
15 февраля 2022
На сколько же не структурирована и не систематизирована на этой платформе подача материала. Теоретические основы подаются очень урезано. Невозможно понять место изучаемого материала в обще структуре средств языка программирования. Да, очень много предлагается статей в качестве дополнительного материала. Но общей структуры нет. Что запомнилось из последнего: коллекции. В лекциях раскрываются основные реализации интерфейсов коллекций. Однако в статье появляются TreeMap, и Hashtable. В лекциях даже общего понятия о них не дано. Джинерики. Вроде читаешь материал по ним понимаешь, как использовать. Но опять же, место в структуре средств языка не дано. Как следствие, не понимаешь зачем они нужны, почему вдруг угловые скобки. Лично я разобрался только, прочитав учебник. Кстати, без учебника человеку без опыта программирования, а уж тем более на Java учиться очень непросто, особенно вникая в парадигму ООП. Вы, например, настолько резко вводите понятие интерфейса на этом уровне. Не просто понять, что такое класс, зачем он нужен вообще. А речи об абстрактных классах вообще не заходило в лекциях. И тут сразу интерфейсы.
Alexey Уровень 15
3 февраля 2022
И зачем тогда нужен Set, если с ним ничего делать нельзя?
Fira Уровень 12
15 февраля 2022
Что значит "ничего"?
Александр Уровень 20
25 июня 2021
Поясните мне, пожалуйста, следующее. Завис на этом вопросе. Список всех значений мапа можно получить так:

map.values()
Тогда для чего нам нужен код такого плана:

pair.getValue()
Если оба варианта делают одно и то же.
Demetria Уровень 22
5 июля 2021
Если я правильно понимаю, то pair.getValue() используем при переборе коллекции, когда нам нужно проделать какие-то действия с элементом (сравнить его, удалить, изменить значение и т.д.). А map.values() позволяет просто получить значения коллекции.
Anonymous #2664145 Уровень 1
11 сентября 2021
Если я правильно понимаю,так просто иногда удобнее,поэтому есть дополнительный метод. Например,нам нужно получить список всех значений Мапы. Если бы не было map.values(),тогда бы мы должны были создать список и через Итератор проходиться по Мапе и добавлять значения наш лист .Примерно так: List<Integer> list = new ArrayList<>(); for(Map.Entry<String,Integer> pair: map.entryset()) { list.add(m.pair.getValue()); } А с методом map.values() мы просто создаем лист вот так:List<Integer> list = map.values(); Меньше кода и удобнее.
Yolkovich Уровень 17
2 июня 2021
ну как всегда) куча заданий пройдено, а теперь мы расскажем как их пройти)
Yarick8bit Уровень 35
13 апреля 2021
Администрация, почему лекцию 8 уровня я должен открывать за темную материю, будучи на 17 уровне? Это баг или фича? И это не первый случай, стоит мне поискать какую-либо тему в поиске на сайте, большинство лекций оказавшихся в выдаче – ниже уровнем, но закрыты. В данном случае, леция вообще не открылась, когда я хотел потратить материю, "lesson is already opened" Но у меня, в 8 уровне нет 7-ой лекции с таким названием!!
Зепп Бранниган Уровень 1 Moderator
14 апреля 2021
Мы проверили в Вашем аккаунте. Открыли лекции 3, 6 и 8 уровней. Никакого количества ЧМ снято не было.
Yarick8bit Уровень 35
16 апреля 2021
Возможно, этот скрин поможет вам понять https://prnt.sc/11i2uda
Зепп Бранниган Уровень 1 Moderator
16 апреля 2021
Вы сейчас на новой версии первого квеста, а пытаетесь открыть ссылку на лекцию из старой версии.
Anonymous #2297535 Уровень 22
21 декабря 2020
Помогите, пожалуйста, разобраться. В классе HashSet имеется метод iterator(): public Iterator<E> iterator() { return map.keySet().iterator(); } Как этот метод может вызываться внутри самого себя?
selfer Уровень 17
3 января 2021
Рекурсия?
4 января 2021
либо это Мап который содержит в себе в качестве элементов другие Мапы.   или так построен алгоритм программы. в первом выражении получают ключ-значение от некого множества, во втором только ключи от второго Мап.
4 февраля 2021
метод keySet() возвращает не HashSet, а KeySet:

    public Set<K> keySet() {
        Set<K> ks = keySet;
        if (ks == null) {
            ks = new KeySet();
            keySet = ks;
        }
        return ks;
    }
Реализация метода iterator() в KeySet:

    public final Iterator<K> iterator()     { return new KeyIterator(); }
, где KeyIterator это:

    final class KeyIterator extends HashIterator
        implements Iterator<K> {
        public final K next() { return nextNode().key; }
    }
Кирилл Уровень 19
13 февраля 2021
Set построен на Map следующим образом: все, что ты заносишь внутрь set в качестве ключа идет в его внутренний объект map,а в качестве значения кидается "мусорный" объект. Соответственно когда ты вызываешь метод iterator() у HashSet,он создает Iterator,проходящий по map.keySet(То есть всем ключам внутреннего private объекта map)
stepa113 Уровень 11
18 декабря 2020
Map – это множество пар. То же множество, но не одиноких элементов, а пар: ключ-значение. Единственное ограничение: первый объект в паре, называемый ключом, должен быть уникальным. В Map не может содержаться две пары с одинаковыми ключами. Ребята, не понимаю в чем разница?
koshi Уровень 1
21 декабря 2020
В смысле? Каждый ключ указывает на своё значение, поэтому ключи должны быть разными. Вот есть у вас кафе, в нём есть два блюда, картофельное пюре и морковное, но называются они оба в вашем меню просто "пюре". И приходит вам заказ на доставку: "пюре". Какое положить?
stepa113 Уровень 11
21 декабря 2020
В том смысле , что все ключи же должны быть уникальными (В Map не может содержаться две пары с одинаковыми ключами). Зачем уточняют, что первый объект в паре, называемый ключом, должен быть уникальным
koshi Уровень 1
21 декабря 2020
Чтобы было понятней и лучше запомнилось, что не может в Map быть две пары с одинаковыми ключами, что ключ это именно первый объект в паре и он называется ключом и ключ должен быть уникальным, то есть не должно быть другого такого же ключа в другой паре, потому что не может быть двух разных пар с одинаковыми ключами... И так далее.
Valua Sinicyn Уровень 41
11 февраля 2021
Map - это карта, в виде ассоциативной пары "ключ : значение". Где ключи уникальны, значения - нет. Вы, скорее всего, уже сами разобрались. Но, лучше изначально заучить определение "карта" и пользоваться ним дальше, т.к., каждый раз твердить "множество пар" или "ассоциативный массив" не очень полезно для душевного здоровья. :)