Java for Beginner
762 subscribers
744 photos
212 videos
12 files
1.24K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Семантика модификаций

Влияние на исходную Map:
Все три представления предоставляют live view, и модификации через них непосредственно влияют на исходную Map:
Удаление через любой итератор удаляет соответствующую пару из Map
Изменение значений через entrySet изменяет значения в Map
Очистка представления очищает исходную Map


Ограничения модификаций:

entrySet: Поддерживает модификацию значений через Map.Entry.setValue()
keySet: Поддерживает только удаление элементов
values: Поддерживает только удаление элементов



Специфика реализации в различных Map

HashMap и связанные реализации

Структура итератора:
Итераторы в HashMap должны обрабатывать сложную структуру данных, включающую массив бакетов, связные списки и деревья.

Процесс итерации включает:
Поиск следующего непустого бакета
Навигацию по цепочке коллизий (список или дерево)
Обработку структурных изменений во время итерации


Механизм fail-fast:
Итераторы HashMap используют счетчик modCount для обнаружения структурных изменений во время итерации. При обнаружении неавторизованной модификации выбрасывается ConcurrentModificationException.

Оптимизации Java 8+:
В современных версиях HashMap итераторы эффективно работают с hybrid структурами, автоматически адаптируясь к спискам и деревьям.


TreeMap

Упорядоченная итерация:


TreeMap обеспечивает обход элементов в sorted порядке, что достигается через:
Inorder traversal красно-черного дерева
Эффективные алгоритмы навигации между узлами
Поддержку descending итераторов

Балансировка и итерация:
Процесс итерации должен корректно работать в условиях ongoing балансировки дерева, обеспечивая consistency обхода.


LinkedHashMap

Итерация с сохранением порядка:
LinkedHashMap гарантирует итерацию в порядке добавления или доступа, что реализуется через:
Следование по двусвязному списку
Поддержку access-order при итерации
Эффективное обновление порядка при операциях доступа



ConcurrentHashMap


Потокобезопасная итерация:
ConcurrentHashMap предоставляет weakly consistent итераторы, которые:
Не выбрасывают ConcurrentModificationException
Могут отражать только часть изменений, произошедших после создания итератора
Обеспечивают высокую производительность в многопоточной среде


Сегментированный обход:
Итерация в ConcurrentHashMap может выполняться по сегментам, что позволяет параллельную обработку в некоторых сценариях.


Потокобезопасность и concurrent модификации

Модель fail-fast

Большинство несинхронизированных реализаций Map используют fail-fast итераторы, которые:
Выбрасывают ConcurrentModificationException при обнаружении структурных изменений
Основаны на сравнении счетчика modCount
Обеспечивают раннее обнаружение ошибок синхронизации


Weakly consistent итераторы
ConcurrentHashMap и другие concurrent реализации используют weakly consistent итераторы, которые:
Не гарантируют отражение всех последних изменений
Не выбрасывают исключения при concurrent модификациях
Обеспечивают баланс между performance и consistency


#Java #для_новичков #beginner #Map #entrySet #keySet #values
Что выведет код?

import java.util.HashMap;
import java.util.Map;

public class Task131125 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);

map.keySet().remove("a");
map.values().remove(2);
map.entrySet().removeIf(entry -> entry.getKey().equals("c"));

System.out.println(map.size());
System.out.println(map.get("a"));
System.out.println(map.get("b"));
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
40%
0 null null
40%
1 null 2
20%
0 null 2
0%
1 null null
Вопрос с собеседований

Что такое REST и его принципы? 🤓


Ответ:

REST
— архитектурный стиль, основанный на HTTP.

Он использует стандартные методы (GET, POST, PUT, DELETE), работает со статeless-сессиями и возвращает ресурсы в виде JSON или XML.

Главные принципы — унифицированный интерфейс и отсутствие состояния.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
История IT-технологий сегодня — 15 ноября


ℹ️ Кто родился в этот день

Григорий Самуилович Цейтин (15 ноября 1936 года, Ленинград — 27 августа 2022 года, Кэмпбелл, Калифорния, США) — советский и американский учёный-математик и специалист по теории вычислимости; известен Tseitin-преобразованием (широко используется в преобразовании логических формул для SAT-солверов) и работами по тематике Algol-68.


🌐 Знаковые события

1971 — фирма «Intel» выпустила свой первый микропроцессор — модель 4004.


#Biography #Birth_Date #Events #15Ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1