Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
1. Синхронизация:
Hashtable потокобезопасен, все его методы синхронизированы. HashMap не потокобезопасен, но работает быстрее в однопоточных сценариях. Для многопоточности можно использовать Collections.synchronizedMap или ConcurrentHashMap.2. Null-значения:
HashMap позволяет использовать null как ключ и значение. Hashtable выбрасывает NullPointerException при попытке добавить null.3. Наследование:
Hashtable — устаревший класс, появился в Java 1.0. HashMap — часть Java Collections Framework, появился в Java 1.2.
// Пример использования HashMap
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("key", null); // Работает
// Пример использования Hashtable
Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("key", null); // NullPointerException
HashMap предпочтителен в большинстве случаев из-за производительности и гибкости. Hashtable используется редко, в основном в legacy-коде.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Spring поддерживает три основных типа инъекций:
1. Constructor Injection — зависимости передаются через конструктор.
2. Setter Injection — зависимости устанавливаются через setter-методы.
3. Field Injection — зависимости внедряются напрямую в поля класса с помощью аннотаций.
Пример:
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired // Constructor Injection
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
Конструкторное внедрение рекомендуется как наиболее предпочтительный способ, так как оно обеспечивает неизменяемость и упрощает тестирование.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
new используется для создания нового объекта. При вызове new выделяется память для объекта, вызывается конструктор класса для инициализации этого объекта, и возвращается ссылка на созданный объект.
ClassName obj = new ClassName();
В данном примере
new ClassName() создает объект типа ClassName. Конструктор ClassName() вызывается для инициализации объекта, а ссылка на этот объект присваивается переменной obj.Оператор
new также используется для создания массивов:
int[] arr = new int[10];
Здесь создается массив из 10 элементов типа
int, и ссылка на этот массив присваивается переменной arr.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Comparator<String> lengthComparator = (s1, s2) -> s1.length() - s2.length();
Здесь создае
тся Comparator, который сравнивает строки по их длине. Лямбда-выражение принимает две строки и возвращает разницу их длин.
Comparator часто используется в методах сортировки:
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.sort(lengthComparator);
В этом примере список строк сортируется по длине с использованием созданного
Comparator.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
public void divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("Divisor cannot be zero");
}
System.out.println(a / b);
}
В примере выбрасывается RuntimeException, если делитель равен нулю. Такие исключения обычно указывают на ошибки в логике программы.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Java собеседования
👍7❤1
void, если они не возвращают значение, или с указанием типа возвращаемого значения.
int add(int a, int b) {
return a + b;
}
Функции могут принимать параметры и возвращать результат. Они используются для организации кода, устранения дублирования и улучшения читаемости.
void printMessage(String message) {
System.out.println(message);
}
Функции могут быть статическими, если принадлежат классу, а не экземпляру, и вызываться без создания объекта.
class MathUtils {
static int multiply(int a, int b) {
return a * b;
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
HashSet и TreeSet — это реализации интерфейса Set, но с разными характеристиками. HashSet хранит элементы в хэш-таблице, обеспечивая вставку и поиск за O(1) в среднем случае. Порядок элементов не гарантируется.
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
TreeSet использует красно-черное дерево для хранения элементов, обеспечивая вставку и поиск за O(log n). Элементы хранятся в отсортированном порядке.
Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
public void methodA() {
methodB(); // Вызов methodB
}
public void methodB() {
methodC(); // Вызов methodC
}
public void methodC() {
throw new RuntimeException("Error in methodC"); // Исключение
}
При возникновении исключения стек вызовов показывает цепочку методов, которые привели к ошибке. Например, если исключение произошло в
methodC, стек будет выглядеть так:
methodC
methodB
methodA
Это помогает определить, где именно возникла ошибка и как программа дошла до этого момента.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
default и static в интерфейсах позволяют добавлять реализацию методов непосредственно в интерфейс. Это расширяет функциональность интерфейсов без нарушения обратной совместимости.
interface Example {
void abstractMethod();
default void defaultMethod() {
System.out.println("Default implementation");
}
static void staticMethod() {
System.out.println("Static method in interface");
}
}
Метод
default предоставляет реализацию по умолчанию, которую можно переопределить в классах. Метод static позволяет добавлять утилитарные методы, которые вызываются через интерфейс, а не через экземпляр класса. Это упрощает расширение интерфейсов и уменьшает дублирование кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
if-else используются для выполнения кода на основе условий. Основные правила включают: - Условие в
if должно быть булевым выражением. - Блок
else не обязателен и выполняется, если условие в if ложно. - Можно использовать
else if для проверки нескольких условий последовательно.
int x = 10;
if (x > 0) {
// выполняется, если x больше 0
} else if (x < 0) {
// выполняется, если x меньше 0
} else {
// выполняется, если x равно 0
}
- Фигурные скобки
{} обязательны, если блок содержит более одной строки кода. - Для улучшения читаемости рекомендуется избегать вложенных
if-else и использовать ранний возврат или тернарные операторы, где это уместно.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1