Какие реализации SortedSet вы знаете и в чем их особенность?
В Java есть несколько реализаций интерфейса SortedSet:
— TreeSet — это реализация на основе красно-черного дерева. Элементы в TreeSet хранятся в отсортированном порядке согласно естественному порядку элементов или компаратору, переданному в конструктор.
Обеспечивает логарифмическую сложность для большинства операций.
— ConcurrentSkipListSet — потокобезопасная реализация, основанная на скип-листов.
Обеспечивает логарифмическую сложность операций и потокобезопасный доступ.
— EnumSet — высокопроизводительная реализация для элементов-перечислений.
Использует внутри битовые вектора для хранения.
— LinkedHashSet — реализация на основе хеш-таблицы и связанного списка.
Сохраняет порядок вставки элементов.
#вопросы_с_собеседований
В Java есть несколько реализаций интерфейса SortedSet:
— TreeSet — это реализация на основе красно-черного дерева. Элементы в TreeSet хранятся в отсортированном порядке согласно естественному порядку элементов или компаратору, переданному в конструктор.
Обеспечивает логарифмическую сложность для большинства операций.
— ConcurrentSkipListSet — потокобезопасная реализация, основанная на скип-листов.
Обеспечивает логарифмическую сложность операций и потокобезопасный доступ.
— EnumSet — высокопроизводительная реализация для элементов-перечислений.
Использует внутри битовые вектора для хранения.
— LinkedHashSet — реализация на основе хеш-таблицы и связанного списка.
Сохраняет порядок вставки элементов.
#вопросы_с_собеседований
👍16
#вопросы_с_собеседований
Можно ли так реализовать метод equals?
Нельзя, так как метод hashCode() не гарантирует уникальность значения для каждого объекта.
Но для сравнения экземпляров объекта Object такой метод допустим, так как там хешкод вычисляется на основании использовании адреса объекта в памяти, поэтому он уникален для разных объектов.
Можно ли так реализовать метод equals?
Нельзя, так как метод hashCode() не гарантирует уникальность значения для каждого объекта.
Но для сравнения экземпляров объекта Object такой метод допустим, так как там хешкод вычисляется на основании использовании адреса объекта в памяти, поэтому он уникален для разных объектов.
👍12🥱8🎉2🌚1
Что такое класс Object? Какие в нем есть методы?
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) — служит для сравнения объектов по значению;
int hashCode() — возвращает hash код для объекта;
String toString() — возвращает строковое представление объекта;
Class getClass() — возвращает класс объекта во время выполнения;
protected Object clone() — создает и возвращает копию объекта;
void notify() — возобновляет поток, ожидающий монитор;
void notifyAll() — возобновляет все потоки, ожидающие монитор;
void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
#вопросы_с_собеседований
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) — служит для сравнения объектов по значению;
int hashCode() — возвращает hash код для объекта;
String toString() — возвращает строковое представление объекта;
Class getClass() — возвращает класс объекта во время выполнения;
protected Object clone() — создает и возвращает копию объекта;
void notify() — возобновляет поток, ожидающий монитор;
void notifyAll() — возобновляет все потоки, ожидающие монитор;
void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
#вопросы_с_собеседований
❤🔥12👍7❤4👏2🥰1