Найти тему
Легко в’IT

Собеседования: List vs Set

А теперь давай топ вопросов к программистам. Ну например, расскажи мне разницу между List и Set. Вроде бы и то и другое списки в Джаве, но не совсем.

В Java List и Set представляют собой две разные коллекции объектов. List представляет собой упорядоченный список элементов, который может содержать дубликаты. Set же представляет собой неупорядоченный набор уникальных элементов. В List ты можешь добавлять элементы по индексу, удалять элементы по индексу и получать элементы по индексу. Set не поддерживает такие исхищрения, но вместо этого он предоставляет методы для добавления (add) значений и проверки наличия (contains) элемента в коллекции и для удаления (remove).

Кстати, у List и Set разная производительность в зависимости от операции, которую ты хочешь сделать. Добавление и удаление элементов в List может быть “дорогой” операцией, особенно если ты делаешь это в середине списка. В Set же добавление и удаление элементов происходит быстрее, но поиск элемента может занять больше времени, особенно если в коллекции много элементов.

Еще например, что у List и Set есть различные надстройки, (то есть типы, основанные на них), каждая из которых имеет свои приколы. Например, LinkedList - это реализация List, которая быстро добавляет и удаляет элементы в середине списка, но медленно получает элементы по индексу. А HashSet - это реализация Set, которая быстро добавляет и удаляет элементы, но не гарантирует порядок элементов при итерации.

Вот этого ответа для джуна-мидла хватит с головой чтобы приятно удивить интервьюера. Так что подписывайся, чтобы не пропустить подобные советы!