В этом уроке мы познакомимся с HashMap — одной из самых популярных коллекций в Java. В отличие от массивов или списков, где доступ к элементам осуществляется по числовому индексу, HashMap хранит данные в парах ключ-значение (Key-Value).
Представьте себе телефонную книгу: имя человека — это ключ, а его номер — значение. Ключи в Map должны быть уникальными, а вот значения могут повторяться. Для объявления используется синтаксис с дженериками: HashMap.
Это отличная тренировка для понимания того, как хранить данные ассоциативно. Мы разберем примеры создания карты, выбора типов данных для ключей и значений, а также посмотрим, как работает код при инициализации.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Выбор типов данных
В данном задании вам предстоит заполнить пропуски в объявлении HashMap, выбрав правильные классы-обертки для типов данных из выпадающего списка. Обратите внимание, что в дженериках (угловых скобках) нельзя использовать примитивные типы (например, int, double), вместо них необходимо указывать соответствующие классы-обертки (Integer, Double). Код демонстрирует создание ассоциативного массива для хранения информации о студенте: имени (строка), возраста (целое число) и среднего балла (число с плавающей точкой).
HashMap<input1S, input2S> studentInfo = new HashMap<>();
studentInfo.put("name", "Алексей");
studentInfo.put("age", 20);
studentInfo.put("averageScore", 4.75);2. Инициализация Map
В этом задании вам нужно дополнить строку инициализации HashMap, вставив пропущенные элементы. Код создаёт карту (Map) с ключами типа String и значениями типа Integer. Для корректной работы необходимо использовать ключевое слово для создания нового объекта и оператор diamond (пустые угловые скобки), позволяющий компилятору вывести типы из контекста. Заполните пропуски так, чтобы строка кода стала синтаксически правильной и компилировалась без ошибок.
Map<String, Integer> scores = input1S HashMapinput2S();3. Ключи и Значения
В левой колонке приведены примеры данных, которые могут использоваться в HashMap. В правой колонке указаны роли: ключ (уникальный) или значение (дублируемое). Сопоставьте каждый пример данных с наиболее подходящей ролью в HashMap, исходя из принципов уникальности ключей и возможной повторяемости значений.
4. Где здесь ключи?
Внимательно изучите приведённый код на Java, который создаёт и заполняет объект HashMap. Ваша задача — кликнуть на все элементы, которые являются ключами (Keys) в этой карте. Ключи — это строки, которые добавляются первым аргументом в метод put. Не отмечайте значения (числа), имена переменных, названия методов или другие части кода.
HashMap<String, Integer> ages = new HashMap<>();
ages.put({{"John"~|~t1}}, {{25~|~t2}});
ages.put({{"Alice"~|~t3}}, {{30~|~t4}});
ages.put({{"Bob"~|~t5}}, {{35~|~t6}});
ages.put({{"Diana"~|~t7}}, 28);
for (String name : ages.keySet()) {
System.out.println(name);
}5. Уникальность ключей
Проанализируйте представленный фрагмент кода на Java, в котором создаётся объект HashMap и в него добавляются три записи. Обратите внимание, что две из этих записей используют одинаковый ключ, но с разными значениями. Определите, сколько пар ключ-значение фактически останется в карте после выполнения всех операций добавления.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
map.put("apple", 30);
System.out.println("Размер карты: " + map.size());
}
}6. Сборка объявления
Из предложенных строк соберите корректную java-программу, которая создаёт объект HashMap
import java.util.HashMap;public class Main { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<>(); map.put("Apple", 10); System.out.println(map.get("Apple")); }}import java.util.ArrayList; HashMap<String, Integer> map2 = new HashMap<>(); System.out.println("Apple");