На этом шаге мы рассмотрим интерфейс Map
Map - интерфейс для работы с ассоциативными массивами. Данный интерфейс не наследуется от интерфейса Collection. В данной коллекции записи хранятся виде пары ключ-значение. Ключи в данной коллекции не повторяются, то есть у каждого ключа только одно значение. Данный интерфейс наделен целым множеством функций. Рассмотрим только часто используемые функции (с другими функциями вы можете ознакомиться в документации):
В интерфейсе Map вложен интерфейс Entry, который представляет из себя запись ключ-значение. Для получения ключа есть функция K getKey(), а для получения значения V getValue(). Также можно для данной пары установить новое значение. Для этого есть функция V setValue(V value).
В Java есть два класса, которые реализуют интерфейс Map:
Приведем ниже пример использования класса TreeMap.
import java.util.Map; import java.util.TreeMap; /** * Программа для демонстрации использования класса TreeMap. * В данной программе мы считаем сколько раз встречается тот или иной символ в * заданной строке. * */ public class Main { public static void main(String[] args) { String s = "abacaba"; /*Создаем ассоциативный массив*/ Map<Character, Integer> counter = new TreeMap<>(); for (int i = 0; i < s.length(); i++) { /* Проверяет есть ли среди ключей i-ый символ Если такой ключ есть */ if (counter.containsKey(s.charAt(i))) { /*То получим старое значение функцией get*/ int oldValue = counter.get(s.charAt(i)); int newValue = oldValue + 1; /*И увеличим старое значение на 1*/ counter.replace(s.charAt(i), newValue); } else { /* Если среди ключей еще нет такого символа, то добавим в counter запись символ(ключ) - 1 (значение) */ counter.put(s.charAt(i), 1); } } /*Перебираем все записи в counter и выводим в виде: ключ: значение*/ for (Map.Entry<Character, Integer> entry : counter.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } }
Проект можно взять здесь
Рис. 1. Вывод программы
На следующем шаге мы рассмотрим класс Collections