HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Определение и виды</a><ul><li><a>Особенности the maps</a></li>
1 <ul><li><a>Определение и виды</a><ul><li><a>Особенности the maps</a></li>
2 </ul></li>
2 </ul></li>
3 <li><a>Основные операции</a><ul><li><a>Создание</a></li>
3 <li><a>Основные операции</a><ul><li><a>Создание</a></li>
4 <li><a>Добавление (вставка) записей</a></li>
4 <li><a>Добавление (вставка) записей</a></li>
5 <li><a>Дублирование ключей</a></li>
5 <li><a>Дублирование ключей</a></li>
6 <li><a>Получение информации</a></li>
6 <li><a>Получение информации</a></li>
7 <li><a>Удаление элементов</a></li>
7 <li><a>Удаление элементов</a></li>
8 <li><a>Размеры</a></li>
8 <li><a>Размеры</a></li>
9 </ul></li>
9 </ul></li>
10 <li><a>Просмотр коллекций</a><ul><li><a>KeySet</a></li>
10 <li><a>Просмотр коллекций</a><ul><li><a>KeySet</a></li>
11 <li><a>The value и EntrySet</a></li>
11 <li><a>The value и EntrySet</a></li>
12 </ul></li>
12 </ul></li>
13 <li><a>Итерации</a><ul><li><a>Применение Foreach</a></li>
13 <li><a>Итерации</a><ul><li><a>Применение Foreach</a></li>
14 <li><a>Сортировка по ключу</a></li>
14 <li><a>Сортировка по ключу</a></li>
15 <li><a>По значению</a></li>
15 <li><a>По значению</a></li>
16 </ul></li>
16 </ul></li>
17 <li><a>Java 9</a></li>
17 <li><a>Java 9</a></li>
18 </ul><p>MAP - структура данных, включающая в себя набор пар "ключ-значение". Напоминает словарь, из-за чего соответствующий компонент часто так и называется. MAP - это еще и интерфейс. В стандартном JDK он поддерживает сразу несколько реализаций. Одна из них является более распространенной и называется Hashmap. Она будет рассмотрена более подробно.</p>
18 </ul><p>MAP - структура данных, включающая в себя набор пар "ключ-значение". Напоминает словарь, из-за чего соответствующий компонент часто так и называется. MAP - это еще и интерфейс. В стандартном JDK он поддерживает сразу несколько реализаций. Одна из них является более распространенной и называется Hashmap. Она будет рассмотрена более подробно.</p>
19 <h2>Определение и виды</h2>
19 <h2>Определение и виды</h2>
20 <p>The map in Java - это вершина иерархии Java Collection. Структура, которая включена в стандартный JDK, начиная с версии 1.2. Предоставляет программисту базовые методы для работы с данными, реализованными в качестве пар "ключ-значение". Функции интерфейса расширяются вместе с обновлениями и совершенствованием Java.</p>
20 <p>The map in Java - это вершина иерархии Java Collection. Структура, которая включена в стандартный JDK, начиная с версии 1.2. Предоставляет программисту базовые методы для работы с данными, реализованными в качестве пар "ключ-значение". Функции интерфейса расширяются вместе с обновлениями и совершенствованием Java.</p>
21 <p>Выше можно увидеть иерархию the maps. Среди реализаций этот компонент разработки выделяет:</p>
21 <p>Выше можно увидеть иерархию the maps. Среди реализаций этот компонент разработки выделяет:</p>
22 <ul><li>Hashmap;</li>
22 <ul><li>Hashmap;</li>
23 <li>LinkedHashMap;</li>
23 <li>LinkedHashMap;</li>
24 <li>TreeMap.</li>
24 <li>TreeMap.</li>
25 </ul><p>Первый вариант пользуется наибольшим применением. Он будет представлен в рассматриваемых далее примерах в подавляющем большинстве.</p>
25 </ul><p>Первый вариант пользуется наибольшим применением. Он будет представлен в рассматриваемых далее примерах в подавляющем большинстве.</p>
26 <p>Карты - структуры данных, необходимые для быстрого поиска. Информация будет храниться по типу "key - value". Каждый ключ в соответствующей подборке уникален. Каждый ключ полностью соответствует значению. Соответствующие пары "key - values" называются элементами карты.</p>
26 <p>Карты - структуры данных, необходимые для быстрого поиска. Информация будет храниться по типу "key - value". Каждый ключ в соответствующей подборке уникален. Каждый ключ полностью соответствует значению. Соответствующие пары "key - values" называются элементами карты.</p>
27 <p>The Java.util.MAP - это the interface, включающий в себя сигнатуры методов для вставки, извлечения, а также удаления.</p>
27 <p>The Java.util.MAP - это the interface, включающий в себя сигнатуры методов для вставки, извлечения, а также удаления.</p>
28 <h3>Особенности the maps</h3>
28 <h3>Особенности the maps</h3>
29 <p>Интерфейсы Map реализуются несколькими классами в Collections Framework. Каждый из них - это отдельная функциональность, а также безопасность потоков. Самый распространенный вариант уже был упомянут - HashMap. Он встречается в основной массе приложений, написанных на JDK.</p>
29 <p>Интерфейсы Map реализуются несколькими классами в Collections Framework. Каждый из них - это отдельная функциональность, а также безопасность потоков. Самый распространенный вариант уже был упомянут - HashMap. Он встречается в основной массе приложений, написанных на JDK.</p>
30 <p>Карты - единственная коллекция Collections Framework, которая не расширяет и не реализует непосредственно интерфейс коллекции. The Map не подойдет для контракта, потому что требует работы с парами, а не с отдельными значениями.</p>
30 <p>Карты - единственная коллекция Collections Framework, которая не расширяет и не реализует непосредственно интерфейс коллекции. The Map не подойдет для контракта, потому что требует работы с парами, а не с отдельными значениями.</p>
31 <h2>Основные операции</h2>
31 <h2>Основные операции</h2>
32 <p>Чтобы полноценно пользоваться коллекциями the map в Java, необходимо знать methods для реализации того или иного функционала. Далее предстоит изучить ключевые команды. Они помогут с дальнейшим освоением изучаемого компонента.</p>
32 <p>Чтобы полноценно пользоваться коллекциями the map в Java, необходимо знать methods для реализации того или иного функционала. Далее предстоит изучить ключевые команды. Они помогут с дальнейшим освоением изучаемого компонента.</p>
33 <h3>Создание</h3>
33 <h3>Создание</h3>
34 <p>Создание (create) подразумевает, что ключи и значения карты могут быть ссылками любого типа. Использовать примитивный тип данных из-за имеющихся ограничений не получится. Они напрямую связаны с разработкой дженериков.</p>
34 <p>Создание (create) подразумевает, что ключи и значения карты могут быть ссылками любого типа. Использовать примитивный тип данных из-за имеющихся ограничений не получится. Они напрямую связаны с разработкой дженериков.</p>
35 <p>The HashMap разрешает создание одного нулевого ключа (the key) и нескольких нулевых значений (values). Он не сохраняет порядок компонентов и не гарантирует, что он всегда будет неизменным.</p>
35 <p>The HashMap разрешает создание одного нулевого ключа (the key) и нескольких нулевых значений (values). Он не сохраняет порядок компонентов и не гарантирует, что он всегда будет неизменным.</p>
36 <p>Создание (creating) HashMap с целочисленными ключами и строковыми значениями осуществляется так:</p>
36 <p>Создание (creating) HashMap с целочисленными ключами и строковыми значениями осуществляется так:</p>
37 <p>Map&lt;Integer, String&gt; map = new HashMap&lt;&gt;();</p>
37 <p>Map&lt;Integer, String&gt; map = new HashMap&lt;&gt;();</p>
38 <p>Все методы (methods), представленные далее, подойдут для любой реализации the map из Collections Framework. Связано это с тем, что все карты реализуют maps interface.</p>
38 <p>Все методы (methods), представленные далее, подойдут для любой реализации the map из Collections Framework. Связано это с тем, что все карты реализуют maps interface.</p>
39 <h3>Добавление (вставка) записей</h3>
39 <h3>Добавление (вставка) записей</h3>
40 <p>Для добавления записей в карту используется метод put. Он поддерживает всего два параметра:</p>
40 <p>Для добавления записей в карту используется метод put. Он поддерживает всего два параметра:</p>
41 <ul><li>ключ;</li>
41 <ul><li>ключ;</li>
42 <li>значение.</li>
42 <li>значение.</li>
43 </ul><p>Далее некоторые методы будут изучены на наглядных примерах. В случае с put the mapping необходимо заполнить карту идентификаторами и именами:</p>
43 </ul><p>Далее некоторые методы будут изучены на наглядных примерах. В случае с put the mapping необходимо заполнить карту идентификаторами и именами:</p>
44 <p>map.put(1, "Petyr Baelish");</p>
44 <p>map.put(1, "Petyr Baelish");</p>
45 <p>map.put(2, "Sansa Stark");</p>
45 <p>map.put(2, "Sansa Stark");</p>
46 <p>map.put(3, "Jon Snow");</p>
46 <p>map.put(3, "Jon Snow");</p>
47 <p>map.put(4, "Jamie Lannister");</p>
47 <p>map.put(4, "Jamie Lannister");</p>
48 <p>Ниже - пример того, как соответствующий компонент выглядит при обработке предложенного фрагмента программного кода:</p>
48 <p>Ниже - пример того, как соответствующий компонент выглядит при обработке предложенного фрагмента программного кода:</p>
49 <p>Иногда необходимо добавить сразу несколько записей или объединить две карты. Put в этом случае не подойдет. Для выполнения соответствующих задач используется команда put all. Она будет копировать ссылки на записи от одной карты для непосредственного заполнения другой.</p>
49 <p>Иногда необходимо добавить сразу несколько записей или объединить две карты. Put в этом случае не подойдет. Для выполнения соответствующих задач используется команда put all. Она будет копировать ссылки на записи от одной карты для непосредственного заполнения другой.</p>
50 <h3>Дублирование ключей</h3>
50 <h3>Дублирование ключей</h3>
51 <p>The keys в картах не могут дублироваться. Если попытаться вставить уже существующий ключ, получится следующая ситуация:</p>
51 <p>The keys в картах не могут дублироваться. Если попытаться вставить уже существующий ключ, получится следующая ситуация:</p>
52 <p>map.put(4, "Daenerys Targaryen");</p>
52 <p>map.put(4, "Daenerys Targaryen");</p>
53 <p>Здесь метод put вернет предыдущее значение, если его хочется использовать. Если предыдущего значения не было, возвращается Null.</p>
53 <p>Здесь метод put вернет предыдущее значение, если его хочется использовать. Если предыдущего значения не было, возвращается Null.</p>
54 <p>Для проверки наличия ключа на создание (creating) используется логический метод containsKey:</p>
54 <p>Для проверки наличия ключа на создание (creating) используется логический метод containsKey:</p>
55 <p>if (map.containsKey(4)) {</p>
55 <p>if (map.containsKey(4)) {</p>
56 <p> throw new IllegalArgumentException("Unable to add character, duplicate id");</p>
56 <p> throw new IllegalArgumentException("Unable to add character, duplicate id");</p>
57 <p>}</p>
57 <p>}</p>
58 <p>В случае created values используется метод containsValue():</p>
58 <p>В случае created values используется метод containsValue():</p>
59 <p>boolean check = map.containsValue("Brienne of Tarth"); // false</p>
59 <p>boolean check = map.containsValue("Brienne of Tarth"); // false</p>
60 <p>Соответствующий прием позволяет проверить наличие в коллекции (словаре) того или иного значения.</p>
60 <p>Соответствующий прием позволяет проверить наличие в коллекции (словаре) того или иного значения.</p>
61 <h3>Получение информации</h3>
61 <h3>Получение информации</h3>
62 <p>В процессе работы с картами в Java иногда мы получаем ту или иную информацию. Для выполнения соответствующей операции используется отдельный the method. Он называется get.</p>
62 <p>В процессе работы с картами в Java иногда мы получаем ту или иную информацию. Для выполнения соответствующей операции используется отдельный the method. Он называется get.</p>
63 <p>String value = map.get(4); // Daenerys Targaryen</p>
63 <p>String value = map.get(4); // Daenerys Targaryen</p>
64 <p>Данный метод принимает ключ, а возвращает значение, которое связано с соответствующим the key. Если "параметры" отсутствуют, get позволит получить NULL.</p>
64 <p>Данный метод принимает ключ, а возвращает значение, которое связано с соответствующим the key. Если "параметры" отсутствуют, get позволит получить NULL.</p>
65 <h3>Удаление элементов</h3>
65 <h3>Удаление элементов</h3>
66 <p>Вместе с созданием (create) карты поддерживают удаление. Это еще одна "стандартная" операция, которая позволяет получить откорректированный словарь.</p>
66 <p>Вместе с созданием (create) карты поддерживают удаление. Это еще одна "стандартная" операция, которая позволяет получить откорректированный словарь.</p>
67 <p>Для удаления компонентов используется метод the remove. Он работает так:</p>
67 <p>Для удаления компонентов используется метод the remove. Он работает так:</p>
68 <ol><li>Принимает ключ в виде "входного" параметра.</li>
68 <ol><li>Принимает ключ в виде "входного" параметра.</li>
69 <li>Ищет запись, которую необходимо удалить.</li>
69 <li>Ищет запись, которую необходимо удалить.</li>
70 <li>Возвращает значение, связанное с удаленным компонентом. Если оно отсутствует, результатом выполнения операции будет NULL.</li>
70 <li>Возвращает значение, связанное с удаленным компонентом. Если оно отсутствует, результатом выполнения операции будет NULL.</li>
71 </ol><p>map.remove(3); // removes and returns "Jon Snow"</p>
71 </ol><p>map.remove(3); // removes and returns "Jon Snow"</p>
72 <p>map.remove(3); // removes nothing and returns null</p>
72 <p>map.remove(3); // removes nothing and returns null</p>
73 <p>Для того чтобы получить "очищенную" карту, может быть вызвана команда clear. Она представлена методом void. Ничего не возвращает.</p>
73 <p>Для того чтобы получить "очищенную" карту, может быть вызвана команда clear. Она представлена методом void. Ничего не возвращает.</p>
74 <p>Выше - наглядный пример (example) формы записи соответствующей команды.</p>
74 <p>Выше - наглядный пример (example) формы записи соответствующей команды.</p>
75 <h3>Размеры</h3>
75 <h3>Размеры</h3>
76 <p>Операция size вернет количество записей на карте:</p>
76 <p>Операция size вернет количество записей на карте:</p>
77 <p>int size = map.size();</p>
77 <p>int size = map.size();</p>
78 <p>При помощи isEmpty удастся вернуть логическое значение. Оно покажет, пуста ли используемая collection, или нет.</p>
78 <p>При помощи isEmpty удастся вернуть логическое значение. Оно покажет, пуста ли используемая collection, или нет.</p>
79 <p>boolean isEmpty = map.isEmpty();</p>
79 <p>boolean isEmpty = map.isEmpty();</p>
80 <p>Формат написания соответствующей операции. Этот фрагмент можно вставить в исходный код для проверки на пустоту.</p>
80 <p>Формат написания соответствующей операции. Этот фрагмент можно вставить в исходный код для проверки на пустоту.</p>
81 <h2>Просмотр коллекций</h2>
81 <h2>Просмотр коллекций</h2>
82 <p>The interfaces "МАП" предоставляют команды, помогающие просматривать collection. С их помощью удастся изучать карту с точки зрения типа коллекции. Соответствующие представления имеют единственный механизм перебора.</p>
82 <p>The interfaces "МАП" предоставляют команды, помогающие просматривать collection. С их помощью удастся изучать карту с точки зрения типа коллекции. Соответствующие представления имеют единственный механизм перебора.</p>
83 <p>Воспользоваться для просмотра collections рекомендуется такими операциями как:</p>
83 <p>Воспользоваться для просмотра collections рекомендуется такими операциями как:</p>
84 <ul><li>keySet - применяется для возврата набора ключей с карты;</li>
84 <ul><li>keySet - применяется для возврата набора ключей с карты;</li>
85 <li>values - возвращает коллекцию значений и "МАП";</li>
85 <li>values - возвращает коллекцию значений и "МАП";</li>
86 <li>entrySet - применяется для возврата набора объектов Map.Empty, которые реализованы в виде пары "ключ-значение" на карте.</li>
86 <li>entrySet - применяется для возврата набора объектов Map.Empty, которые реализованы в виде пары "ключ-значение" на карте.</li>
87 </ul><p>Стоит помнить, что просмотры поддерживаются используемой картой. Это значит, что любые изменения, внесенные в представление, обновляют "базовый" объект. Обратный принцип здесь тоже работает. Представления допускают удаление created a value and keys, но не вставку.</p>
87 </ul><p>Стоит помнить, что просмотры поддерживаются используемой картой. Это значит, что любые изменения, внесенные в представление, обновляют "базовый" объект. Обратный принцип здесь тоже работает. Представления допускают удаление created a value and keys, но не вставку.</p>
88 <h3>KeySet</h3>
88 <h3>KeySet</h3>
89 <p>KeySet используется для того, чтобы вернуть набор ключей, содержащихся в карте:</p>
89 <p>KeySet используется для того, чтобы вернуть набор ключей, содержащихся в карте:</p>
90 <p>Set&lt;Integer&gt; keys = map.keySet(); // [1, 2, 4]</p>
90 <p>Set&lt;Integer&gt; keys = map.keySet(); // [1, 2, 4]</p>
91 <p>Других предназначений команда не имеет.</p>
91 <p>Других предназначений команда не имеет.</p>
92 <h3>The value и EntrySet</h3>
92 <h3>The value и EntrySet</h3>
93 <p>Пользуясь просмотром the java util map, иногда необходимо вернуть the collection value, хранимых в карте:</p>
93 <p>Пользуясь просмотром the java util map, иногда необходимо вернуть the collection value, хранимых в карте:</p>
94 <p>Представленная команда не вернет всю коллекцию вместо набора. Связано это с тем, что параметры карты не обязательно являются уникальными. Набор в этом случае функционировать не будет.</p>
94 <p>Представленная команда не вернет всю коллекцию вместо набора. Связано это с тем, что параметры карты не обязательно являются уникальными. Набор в этом случае функционировать не будет.</p>
95 <p>При помощи операции entrySet разработчик сможет получить набор записей в the collection. Результатом станет набор объектов the Map.Entry. Объекты the Map.Entry представлены в виде пары "ключ-значение". Для соответствующих компонентов допускается использование таких команд как getKey и getValue.</p>
95 <p>При помощи операции entrySet разработчик сможет получить набор записей в the collection. Результатом станет набор объектов the Map.Entry. Объекты the Map.Entry представлены в виде пары "ключ-значение". Для соответствующих компонентов допускается использование таких команд как getKey и getValue.</p>
96 <p>EntrySet часто используется для формирования циклов.</p>
96 <p>EntrySet часто используется для формирования циклов.</p>
97 <h2>Итерации</h2>
97 <h2>Итерации</h2>
98 <p>Итерации по the mapping collections возможны различными способами. Далее будут представлены наиболее распространенные концепции и реализации.</p>
98 <p>Итерации по the mapping collections возможны различными способами. Далее будут представлены наиболее распространенные концепции и реализации.</p>
99 <p>Стоит обратить внимание на то, что циклы вызывают исключение the NullPointerException. Это произойдет, если попытаться перебрать нулевую карту.</p>
99 <p>Стоит обратить внимание на то, что циклы вызывают исключение the NullPointerException. Это произойдет, если попытаться перебрать нулевую карту.</p>
100 <h3>Применение Foreach</h3>
100 <h3>Применение Foreach</h3>
101 <p>Наиболее распространенный вариант итерации по the map - это использование foreach. Он предпочтителен для основной массы задач.</p>
101 <p>Наиболее распространенный вариант итерации по the map - это использование foreach. Он предпочтителен для основной массы задач.</p>
102 <p>При обработке соответствующего фрагмента разработчику будет предоставлен доступ не только к ключам, но и к значениям.</p>
102 <p>При обработке соответствующего фрагмента разработчику будет предоставлен доступ не только к ключам, но и к значениям.</p>
103 <p>Выше - наглядный пример использования лямбда-выражений в Java 8.</p>
103 <p>Выше - наглядный пример использования лямбда-выражений в Java 8.</p>
104 <h3>Сортировка по ключу</h3>
104 <h3>Сортировка по ключу</h3>
105 <p>Hashmap не позволяет сохранить порядок в своих записях. Ниже - пример, наглядно демонстрирующий соответствующую ситуацию:</p>
105 <p>Hashmap не позволяет сохранить порядок в своих записях. Ниже - пример, наглядно демонстрирующий соответствующую ситуацию:</p>
106 <p>После обработки кода содержимое the map будет выведено в консоль, но в случайном порядке:</p>
106 <p>После обработки кода содержимое the map будет выведено в консоль, но в случайном порядке:</p>
107 <p>При использовании TreeMap произойдет автоматическая сортировка по ключу. Вот так будет выглядеть преобразование HashMap в the ThreeMap:</p>
107 <p>При использовании TreeMap произойдет автоматическая сортировка по ключу. Вот так будет выглядеть преобразование HashMap в the ThreeMap:</p>
108 <p>Выше - пример реализации операции и результат, который будет выведен непосредственно на дисплей устройства. Такой подход - это сортировка по ключу.</p>
108 <p>Выше - пример реализации операции и результат, который будет выведен непосредственно на дисплей устройства. Такой подход - это сортировка по ключу.</p>
109 <h3>По значению</h3>
109 <h3>По значению</h3>
110 <p>Более сложный вариант осуществления итераций в картах - это сортировка содержимого по значениям. Ниже - фрагмент, на который можно опираться при реализации команды:</p>
110 <p>Более сложный вариант осуществления итераций в картах - это сортировка содержимого по значениям. Ниже - фрагмент, на который можно опираться при реализации команды:</p>
111 <p>Здесь:</p>
111 <p>Здесь:</p>
112 <ol><li>В строке 3 создается список именованных записей. Они включают в себя объекты the map.Entry из карты, в которую был передан метод.</li>
112 <ol><li>В строке 3 создается список именованных записей. Они включают в себя объекты the map.Entry из карты, в которую был передан метод.</li>
113 <li>Строки 5-10 используются вместе с Collections.sort(). В них реализован Comparator при помощи entry.getValue. Это необходимо для того, чтобы система понимала, как именно сравнивать записи. Они будут отсортированы по значению.</li>
113 <li>Строки 5-10 используются вместе с Collections.sort(). В них реализован Comparator при помощи entry.getValue. Это необходимо для того, чтобы система понимала, как именно сравнивать записи. Они будут отсортированы по значению.</li>
114 <li>В 12 строчке создается LinkedHashMap. Он представляет собой реализацию карты, которая сохраняет порядок вставки имеющихся записей.</li>
114 <li>В 12 строчке создается LinkedHashMap. Он представляет собой реализацию карты, которая сохраняет порядок вставки имеющихся записей.</li>
115 <li>Строки 14-16 дают возможность "перебрать" список и заполнить новую the map.</li>
115 <li>Строки 14-16 дают возможность "перебрать" список и заполнить новую the map.</li>
116 </ol><p>Выше - наглядный пример соответствующего варианта организации итераций в действии. Пользователи могут увидеть не только фрагмент кода, но и результат, выводимый на дисплее.</p>
116 </ol><p>Выше - наглядный пример соответствующего варианта организации итераций в действии. Пользователи могут увидеть не только фрагмент кода, но и результат, выводимый на дисплее.</p>
117 <p>Интерфейс the map в Java 9 поддерживает синтаксический сахар для неизменных карт. Под ними подразумевается компонент, который не может изменяться. В такой карте не поддерживаются ни команды удаления, ни добавления новых записей.</p>
117 <p>Интерфейс the map в Java 9 поддерживает синтаксический сахар для неизменных карт. Под ними подразумевается компонент, который не может изменяться. В такой карте не поддерживаются ни команды удаления, ни добавления новых записей.</p>
118 <p>Выше можно увидеть пример создания такого объекта в Java 8. Java 9 предлагает статический фабричный метод Map.of. Он нужен для упрощения создания неизменных карт.</p>
118 <p>Выше можно увидеть пример создания такого объекта в Java 8. Java 9 предлагает статический фабричный метод Map.of. Он нужен для упрощения создания неизменных карт.</p>
119 <p>На the map поддерживаются методы добавления и удаления записей. При их вызове появляется исключение UnsupportedOperationException.</p>
119 <p>На the map поддерживаются методы добавления и удаления записей. При их вызове появляется исключение UnsupportedOperationException.</p>
120 <p>Теперь основы the mapping в Java изучены в общих чертах. Здесь можно увидеть наглядный пример того, как реализована работа с картами. Быстрее и лучше изучить соответствующий компонент и иные<a>инструменты программирования на Java помогут специальные дистанционные компьютерные курсы</a>.</p>
120 <p>Теперь основы the mapping в Java изучены в общих чертах. Здесь можно увидеть наглядный пример того, как реализована работа с картами. Быстрее и лучше изучить соответствующий компонент и иные<a>инструменты программирования на Java помогут специальные дистанционные компьютерные курсы</a>.</p>
121  
121