Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Освоение Java HashMap: операции, примеры и лучшие практики

Освоение Java HashMap

Изучите класс Java HashMap — его основные возможности, частые операции и практические примеры — чтобы уверенно использовать его в реальных приложениях.

Класс HashMap, часть Java Collections Framework, реализует хеш-таблицу, хранящую данные в парах ключ/значение. Каждый ключ уникален и служит идентификатором для связанного значения. Класс реализует интерфейс Map, предоставляя универсальный API для манипуляции данными.


Создание HashMap

Начните с импорта пакета java.util.HashMap:

import java.util.HashMap;

Затем создайте экземпляр карты. Можно указать обобщённые типы ключа K и значения V, или полагаться на вывод типов:

HashMap<K, V> numbers = new HashMap<>();

Пример с конкретными типами:

HashMap<String, Integer> numbers = new HashMap<>();

Пример 1: Базовое создание HashMap

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> languages = new HashMap<>();
        languages.put("Java", 8);
        languages.put("JavaScript", 1);
        languages.put("Python", 3);
        System.out.println("HashMap: " + languages);
    }
}

Вывод

HashMap: {Java=8, JavaScript=1, Python=3}

Основные операции с HashMap

Класс HashMap предлагает богатый набор методов. Ниже рассмотрены наиболее часто используемые:


1. Добавление элементов

Используйте put() для вставки пары ключ/значение. Если ключ уже существует, значение заменяется.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> numbers = new HashMap<>();
        System.out.println("Initial HashMap: " + numbers);
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("HashMap after put(): " + numbers);
    }
}

Вывод

Initial HashMap: {} HashMap after put(): {One=1, Two=2, Three=3}

Ключ: String, Значение: Integer в этом примере.


2. Доступ к элементам

Получите значение с помощью get(key). Метод возвращает null, если ключ отсутствует.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String value = languages.get(1);
        System.out.println("Value at key 1: " + value);
    }
}

Вывод

HashMap: {1=Java, 2=Python, 3=JavaScript} Value at key 1: Java

Также можно получить полный набор ключей, коллекцию значений или набор записей через keySet(), values() и entrySet():

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.println("Keys: " + languages.keySet());
        System.out.println("Values: " + languages.values());
        System.out.println("Entries: " + languages.entrySet());
    }
}

Вывод

HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Entries: [1=Java, 2=Python, 3=JavaScript]

3. Обновление значений

Метод replace(key, newValue) заменяет существующее значение для данного ключа. Возвращает старое значение или null, если ключ отсутствовал.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("Original HashMap: " + languages);
        languages.replace(2, "C++");
        System.out.println("After replace(): " + languages);
    }
}

Вывод

Original HashMap: {1=Java, 2=Python, 3=JavaScript} After replace(): {1=Java, 2=C++, 3=JavaScript}

4. Удаление элементов

Удалите отображение с помощью remove(key), который возвращает удалённое значение. Для условного удаления используйте remove(key, value), который удаляет только если текущее отображение совпадает с указанным значением.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String removed = languages.remove(2);
        System.out.println("Removed value: " + removed);
        System.out.println("Updated HashMap: " + languages);
    }
}

Вывод

HashMap: {1=Java, 2=Python, 3=JavaScript} Removed value: Python Updated HashMap: {1=Java, 3=JavaScript}

Дополнительные методы HashMap

МетодОписание
clear()Удаляет все отображения
compute()Вычисляет новое значение для ключа
computeIfAbsent()Вычисляет значение только если ключ отсутствует
computeIfPresent()Вычисляет значение только если ключ существует
merge()Объединяет новое отображение с существующим
clone()Создаёт поверхностную копию
containsKey()Проверяет наличие конкретного ключа
containsValue()Проверяет наличие конкретного значения
size()Количество пар ключ/значение
isEmpty()Пуста ли карта

Итерация по HashMap

Используйте for-each цикл для обхода ключей, значений или записей. Импортируйте java.util.Map.Entry для итерации по записям.

import java.util.HashMap;
import java.util.Map.Entry;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.print("Keys: ");
        for (Integer key : languages.keySet()) {
            System.out.print(key + ", ");
        }
        System.out.print("\nValues: ");
        for (String value : languages.values()) {
            System.out.print(value + ", ");
        }
        System.out.print("\nEntries: ");
        for (Entry<Integer, String> entry : languages.entrySet()) {
            System.out.print(entry + ", ");
        }
    }
}

Вывод

HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Создание HashMap из другой Map

Создайте экземпляр HashMap с содержимым существующей карты:

import java.util.HashMap;
import java.util.TreeMap;
class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> evenNumbers = new TreeMap<>();
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);
        System.out.println("TreeMap: " + evenNumbers);
        HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
        numbers.put("Three", 3);
        System.out.println("HashMap: " + numbers);
    }
}

Вывод

TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}

Опциональные параметры конструктора позволяют задать начальную ёмкость и коэффициент загрузки:

HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

Значения по умолчанию: capacity = 16 и load factor = 0.75.

Для более глубокого погружения обратитесь к официальной документации Java или авторитетным ресурсам вроде "Effective Java" Джошуа Блоха.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Понимание Java Vector: использование, особенности и сравнение с ArrayList