Загрузка...

HashMap в Java

Создайте HashMap<String, String> с именем scores, вызовите scores.put("oak", "leaf");, затем напечатайте scores.get("oak"). Скомпилируйте Desk.java и запустите java Desk. Экран должен показать одну строку: leaf. Ключ "oak" находит значение "leaf". Записать пару и прочитать её по тому же ключу — вот чему учит эта страница.

Ключ, который находит значение

На странице list-methods вы доходили до значений по номеру ячейки: get(0). HashMap доходит до значения по ключу, который выбираете вы. Пару вы пишете через put. Значение читаете через get и тот же ключ. На учебном пути этого урока нет ячейки ноль — ключ и есть метка.
Откройте Desk.java. Оставьте имя открытого класса Desk, чтобы оно совпадало с именем файла. Удалите оставшиеся строки ArrayList, tags.get(0), tags.size(), tags.remove(0) и любой демо Rack или Shelf. Они относятся к страницам списков. Удалите также любой Scanner, nextLine или чтение с клавиатуры. Программа не должна ждать ввода.
Близко к верху, над public class Desk, напишите:
import java.util.HashMap;
Этот импорт делает тип HashMap доступным по короткому имени. Без него javac на этой странице не видит короткое имя HashMap. Пишите java.util и HashMap внимательно. Не делайте import java.util.*; обязательным здесь — одного точного импорта достаточно.
Внутри main создайте карту:
HashMap<String, String> scores = new HashMap<String, String>();
Первый тип в угловых скобках — вид ключа. Второй — вид значения. Оба на этой странице String, чтобы демо оставалось на словах. Имя scores — то, что вы держите в учебном файле. Вызов new HashMap<String, String>() строит пустую карту. В этот момент в ней нет пар.

Положите oak → leaf, затем прочитайте oak

Вызовите scores.put("oak", "leaf"); на отдельной строке. Первое слово в кавычках — ключ. Второе — значение. Порядок внутри put важен: сначала ключ, потом значение. Не меняйте их местами в файле, который сохраняете.
Затем напишите:
System.out.println(scores.get("oak"));
Передайте в get тот же ключ "oak". Не передавайте "leaf" как аргумент get в сохранённом файле — get просит ключ, а не значение. Не пишите scores.get(0) — это форма списка из Rack, а не форма карты здесь. Сохраните перед компиляцией.

Desk put then get

java
import java.util.HashMap;

public class Desk {
    public static void main(String[] args) {
        HashMap<String, String> scores = new HashMap<String, String>();
        scores.put("oak", "leaf");
        System.out.println(scores.get("oak"));
    }
}

Из папки, где лежит Desk.java, выполните javac Desk.java. Когда скобки, фигурные скобки, угловые скобки и точки с запятой совпадают, javac не пишет своей строки. Затем запустите java Desk — не java Desk.java и не java HashMap. Уберите окончание .java из команды запуска. Запустите класс, в котором есть main.
Программа должна напечатать одну строку и остановиться: leaf. Она не должна просить вас печатать. Если терминал ждёт ввода с клавиатуры, в каком-то файле ещё остался вызов nextLine из старого упражнения. Удалите этот вызов и оставьте создание HashMap, строку put и System.out.println(scores.get("oak"));.
Пройдите запуск один раз. Java начинает с Desk.main. Импорт уже назвал, какой HashMap вы имеете в виду. Строка new строит пустую карту. put сохраняет пару oak → leaf. Вызов get("oak") возвращает leaf. Строка печати пишет это слово. Экран показывает leaf. Больше ничего печататься не должно. Если видите oak, вы напечатали ключ вручную или использовали неверный аргумент get. Если видите 2 или [pine], ещё крутится демо size или remove из Rack — перейдите к java Desk.
Если javac говорит, что не находит HashMap, строка импорта отсутствует, написана с ошибкой или стоит после public class Desk. Переместите import java.util.HashMap; выше строки класса. Если вызвать get("oak") до любого put, печать может показать null, потому что этот ключ никогда не сохраняли. На этой странице держите put перед get. Если написать scores.put(oak, leaf); без кавычек, javac считает слова именами, которых нет. Оставьте кавычки вокруг ключа и значения.

Печать всей карты как второй взгляд

Второй файл Desk печатает объект карты после того же put. Это показывает форму пары, которую Java использует, когда вы печатаете саму карту.

Desk print whole map

java
import java.util.HashMap;

public class Desk {
    public static void main(String[] args) {
        HashMap<String, String> scores = new HashMap<String, String>();
        scores.put("oak", "leaf");
        System.out.println(scores);
    }
}

Скомпилируйте и запустите этот второй файл тем же способом. Экран показывает {oak=leaf} — ключ, знак равенства, значение, в фигурных скобках. Эта форма полезна, чтобы подтвердить, что пара внутри карты. Учебный путь для экрана квиза leaf по-прежнему первый файл с get("oak"). Печать всей карты используйте только чтобы увидеть сохранённую пару. Не смешивайте get(0) ни в одном файле Desk — карты на этой странице не используют номера ячеек списка.
Если экран показывает [] или [oak, pine], ещё крутится демо ArrayList. Оставайтесь с HashMap и java Desk.

Сравнение с get списка и с put

На странице list-methods после add вызову get(0) нужен был индекс ячейки. На этой странице после put вызову get("oak") нужна строка-ключ. Оставшийся файл Rack, который печатает только tags.get(0), — другой урок. Для этой страницы держите в Desk вызовы put("oak", "leaf") и get("oak").
Вы можете сохранить больше пар дополнительными вызовами put. Эта страница держит одну пару, чтобы ключ и напечатанное значение было легко увидеть. Поздняя страница — HashSet — хранит уникальные значения без отдельной истории пары ключ-значение. Здесь оставайтесь с put и get у HashMap.
Когда рядом ещё лежат старые Rack.java или Shelf.java, оставьте их или удалите только если они путают, какой класс вы запускаете. Запустите java Desk после компиляции файла HashMap этого урока.

Что остаётся для HashSet

Эта страница открывает хранение ключ-значение через HashMap. Следующая страница открывает набор уникальных значений через HashSet. Здесь оставайтесь с put и get на карте. Не делайте set-add обязательным на этой странице; цель урока — ключ, который находит значение, и экран leaf.

Перед HashSet

Вы можете импортировать java.util.HashMap, создать HashMap<String, String> scores, вызвать scores.put("oak", "leaf");, затем напечатать scores.get("oak"). Скомпилируйте Desk.java и запустите java Desk. Экран показывает leaf. Ключ нашёл значение. Следующая страница — HashSet, где вы храните уникальные значения, не связывая каждое с отдельным ключом на пути того урока.
Держите импорт над классом. Держите put перед get. Держите ключ "oak" одинаковым в обоих вызовах. Эти три привычки — контрольная точка этой страницы перед движением дальше. Когда после get("oak") экран показывает leaf, HashMap сделал работу этого урока, и вы готовы к следующей теме.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху