Java Learning
19.3K subscribers
1.59K photos
1 video
3 files
963 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Java RegEx: использование регулярных выражений на практике

Рассмотрим регулярные выражения в Java, затронув синтаксис и наиболее популярные конструкции, а также продемонстрируем работу RegEx на примерах.

Смотреть статью
👍8
#Вопросы_с_собеседования

Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?

Необходимо использовать LRU-алгоритм (Least Recently Used algorithm) и LinkedHashMap с access-order. В этом случае при обращении к элементу он будет перемещаться в конец списка, а наименее используемые элементы будут постепенно группироваться в начале списка. Так же в стандартной реализации LinkedHashMap есть метод removeEldestEntries(), который возвращает true, если текущий объект LinkedHashMap должен удалить наименее используемый элемент из коллекции при использовании методов put() и putAll().

Стоит заметить, что LinkedHashMap не позволяет полностью реализовать LRU-алгоритм, поскольку при вставке уже имеющегося в коллекции элемента порядок итерации по элементам не меняется.
👍121
#Вопросы_с_собеседования

Зачем нужен HashMap, если есть Hashtable?

• Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
• Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).

Hashtable это устаревший класс и его использование не рекомендовано.
👍31
#Вопросы_с_собеседования

Как одной строчкой преобразовать HashSet в ArrayList?

Ответ на картинке.
👍37😱3
Простой пример JDBC для начинающих

JDBC (Java DataBase Connectivity — соединение с базами данных на Java) предназначен для взаимодействия Java-приложения с различными системами управления базами данных (СУБД).

Смотреть статью
👍18
#Вопросы_с_собеседования

Как получить коллекцию только для чтения?

При помощи:
Collections.unmodifiableList(list);
Collections.unmodifiableSet(set);
Collections.unmodifiableMap(map).

Эти методы принимают коллекцию в качестве параметра, и возвращают коллекцию только для чтения с теми же элементами внутри.
👍33
#Вопросы_с_собеседования

Как одной строчкой преобразовать ArrayList в HashSet?

Ответ на картинке.
👍27😱9
Tapestry

Tapestry объектно-ориентированный Java фреймворк для создания веб-приложений, реализующих модель MVC. Tapestry был создан Howard Lewis Ship и продолжает активно развиваться. Фреймворк является проектом верхнего уровня в организации Apache Software Foundation.

Посмотреть документацию можно здесь.
👍192
Что такое ReadWriteLock?

ReadWriteLock – это интерфейс расширяющий базовый интерфейс Lock. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивеной.

Существует реализующий интерфейс ReadWriteLock класс ReentrantReadWriteLock, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
👍19
JFreeChart

Библиотека для создания диаграмм прямо на Java — круговых, объёмных и линейных, а также графиков. Позволяет настраивать фон, оси, заголовки. Полученные диаграммы можно сохранять в JPEG и PNG форматы.

Посмотреть документацию можно здесь.
👍13
#Вопросы_с_собеседования

Правда ли, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных — в куче?

Ответ:
Нет. Примитивные поля экземпляра класса хранятся не в стеке, а в куче, а любой объект (всё, что создаётся при помощи оператора new) хранится в куче.
👍27👎6
#Вопросы_с_собеседования

Сделайте HashSet из ключей HashMap

Ответ на картинке.
👍27👎1
java8-tutorial

Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.

https://github.com/winterbe/java8-tutorial
👍8😱2
Какова оценка временной сложности операций над элементами из HashMap? Гарантирует ли HashMap указанную сложность выборки элемента?

В общем случае операции добавления, поиска и удаления элементов занимают константное время.

Данная сложность не гарантируется, т.к. если хэш-функция распределяет элементы по корзинам равномерно, временная сложность станет не хуже Логарифмического времени O(log(N)), а в случае, когда хэш-функция постоянно возвращает одно и то же значение, HashMap превратится в связный список со сложностью О(n).

Пример кода двоичного поиска приведен выше.
👍20
#Вопросы_с_собеседования

Сколько выделяется дополнительно памяти при вызове LinkedList.add()?

Ответ:
Создается один новый экземпляр вложенного класса Node.
👍25👎4
#Вопросы_с_собеседования

Что такое Spring Initializr?

Spring Initializr — это удобный способ создать проект на Spring Boot.

Для этого можно перейти на сайт Spring Initializr, выбрать инструмент управления зависимостями (Maven или Gradle), язык (Java, Kotlin или Groovy), схему упаковки (Jar или War), версию, зависимости и загрузить проект. Это создаст для нас каркас проекта и сэкономит время на настройку, поэтому мы сможем сосредоточиться на добавлении бизнес-логики.

Даже когда мы используем мастер создания нового проекта в IDE (например, STS или Eclipse с плагином STS) для создания проекта со Spring Boot, под капотом используется Spring Initializr.
👍20