Что будет, если попытаться вставить в HashMap уже имеющийся в ней ключевой объект?Этот каверзный вопрос – часть другого часто задаваемого вопроса: как работают HashMap в языке Java? HashMap – популярная тема для запутанных и каверзных вопросов по языку Java.Ответ таков: если попытаться повторно вставить ключ в HashMap, он заменит старый, поскольку класс HashMap не допускает дублирующихся ключей. А тот же ключ означает такой же хэш-код, так что он попадет в то же место в хэш-сегменте.👉
Похожие каналы
Все →Последние посты
Что вернет выражение 1.0/0.0? Приведет ли оно к генерации исключения или ошибке при компиляции?Еще один каверзный вопрос насчет класса Double. Хотя разработчики Java знают о существовании простого типа данных double и класса Double, при выполнении операций с плавающей точкой они не уделяют достаточного внимания Double.INFINITY, NaN, -0.0 и правилам, которым подчиняются связанные с ними арифметические вычисления. Ответ на этот вопрос прост: генерации исключения ArithmeticException не произойдет, будет возвращено значение Double.INFINITY.👉
Learn Java Basics- Introduction | Java Tutorial for Beginners, Learn to Code- Hello World | Learn to code, Java Course, Java Tutorial- Variables, Fields and Methods |Java Course,Java Tutorial- Arguments, Conditional statements & Arrays | Java Course- Loops | Learn to code, Java Course, Java Tutorial- Create a WORDLE Game | Learn to code, Java Course- IO & Exceptions in WORDLE | Learn to code, Java Course- Saving and Loading State | Learn to code, Java Course- Maven, Objects, Encapsulation & Records | Learn to code- Parsing and Saving JSON with Moshi | Learn to codeисточник👉Learn Java Basics- Introduction | Java Tutorial for Beginners, Learn to Code- Hello World | Learn to code, Java Course, Java Tutorial- Variables, Fields and Methods |Java Course,Java Tutorial- Arguments, Conditional statements & Arrays | Java Course- Loops | Learn to code, Java Course, Java Tutorial- Create a WORDLE Game | Learn to code, Java Course- IO & Exceptions in WORDLE | Learn to code, Java Course- Saving and Loading State | Learn to code, Java Course- Maven, Objects, Encapsulation & Records | Learn to code- Parsing and Saving JSON with Moshi | Learn to codeисточник👉

📌 Java Collections👉📌 Java Collections👉
Самоучитель по Pattern Matching в Java 21Про новые возможности сопоставления с образцом (Pattern Matching) в Java 21.https://nipafx.dev/java-21-pattern-matching/👉
В чем разница между классами StringBuffer и StringBuilder в языке Java?В языке Java классы StringBuffer и StringBuilder предназначены для работы с изменяемыми строками, но их основное различие заключается в потокобезопасности:🟢 1. StringBuffer: - Потокобезопасность: Все методы синхронизированы, что делает этот класс безопасным для использования в многопоточных приложениях. - Производительность: Из-за синхронизации работает медленнее в однопоточных сценариях, поскольку приходится выполнять дополнительные проверки на блокировку. - Использование: Подходит, если требуется работа с изменяемыми строками в многопоточном окружении.🟢 2. StringBuilder: - Потокобезопасность: Методы не синхронизированы, поэтому StringBuilder не является потокобезопасным. - Производительность: Быстрее, чем StringBuffer, при работе в однопоточном приложении, поскольку отсутствуют накладные расходы на синхронизацию. - Использование: Подходит для сценариев с однопоточной обработкой строк.🟢 3. Общие черты: - Оба класса используют внутренний изменяемый буфер для хранения данных, что позволяет эффективно добавлять, изменять или удалять содержимое строки. - Методы, такие как append(), insert(), delete(), reverse() и replace(), одинаково реализованы в обоих классах.🟢 4. Рекомендации по выбору: - Используйте StringBuffer, если требуется работа с несколькими потоками и безопасность важнее производительности. - Используйте StringBuilder, если работаете с однопоточным кодом, чтобы обеспечить максимальную производительность.🟢 Пример кода:// StringBuffer (потокобезопасный)StringBuffer buffer = new StringBuffer("Hello");buffer.append(" World");System.out.println(buffer);// StringBuilder (быстрее в однопоточных сценариях)StringBuilder builder = new StringBuilder("Hello");builder.append(" World");System.out.println(builder);Выбор между StringBuffer и StringBuilder зависит от контекста использования — многопоточная или однопоточная среда.👉
Многопоточность в Java В Java многопоточность реализована через класс Thread и интерфейс Runnable. Вот основные моменты, которые могут быть полезны при работе с многопоточностью:🔵1. Создание и запуск потока - Поток может быть создан двумя способами: - Наследование от класса Thread: class MyThread extends Thread { public void run() { // Код, выполняемый в потоке } } MyThread t = new MyThread(); t.start(); - Реализация интерфейса Runnable: class MyRunnable implements Runnable { public void run() { // Код, выполняемый в потоке } } Thread t = new Thread(new MyRunnable()); t.start(); 🔵2. Основные методы класса Thread - start() — запуск потока. - sleep(long millis) — приостановка потока на определенное время. - join() — ожидание завершения потока. - interrupt() — прерывание потока. - isAlive() — проверка, работает ли поток.🔵3. Синхронизация - Чтобы избежать проблем с конкурентным доступом к данным, используется синхронизация: synchronized (this) { // Критическая секция } Это гарантирует, что только один поток может выполнить код внутри синхронизированного блока.🔵4. Пул потоков - Для управления большим количеством потоков используется пул потоков, который управляется через ExecutorService. Пример: ExecutorService executor = Executors.newFixedThreadPool(10); executor.submit(() -> { // Задача для потока }); executor.shutdown(); 🔵5. Состояния потока Потоки могут находиться в разных состояниях: - NEW: Поток создан, но не запущен. - RUNNABLE: Поток готов к выполнению. - WAITING: Поток ожидает другого потока. - TIMED_WAITING: Поток ожидает в течение определенного времени. - TERMINATED: Поток завершен.🔵6. Проблемы многопоточности - Состояние гонки (Race condition) — ситуация, когда несколько потоков одновременно пытаются изменить данн
Уроки Java для начинающих #1 — Установка JDK и IDE#2 — Переменные. Примитивные типы данных#3 — Строки (String). Ссылочные типы данных#4 — Условные конструкции (if-else, switch-case)#5 — Цикл for#6— Циклы While и Do While#7 — Консольный ввод данных#8 — Массивы#9 — Многомерные массивы#10 — Классы и объектыисточник👉Уроки Java для начинающих #1 — Установка JDK и IDE#2 — Переменные. Примитивные типы данных#3 — Строки (String). Ссылочные типы данных#4 — Условные конструкции (if-else, switch-case)#5 — Цикл for#6— Циклы While и Do While#7 — Консольный ввод данных#8 — Массивы#9 — Многомерные массивы#10 — Классы и объектыисточник👉