Sobes.tech
Назад к вопросам
Junior — Middle
70

Как отличаются коллекции List и Set по своей структуре и использованию?

Компании, где спрашивали
IBS

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

List — это упорядоченная коллекция с доступом по индексу и возможностью хранить дубликаты. Set — это коллекция уникальных элементов без гарантии доступа по индексу. На собеседовании важно показать, что выбор зависит от задачи: нужна ли сохранность порядка и повторов или только уникальность значений.

Определение:

List — это последовательность элементов, где важны позиция, порядок добавления и возможность обращаться по индексу. В List можно хранить одинаковые значения.

Set — это коллекция, которая хранит только уникальные элементы. Она подходит, когда нужно исключить дубли и часто не нужен доступ по позиции.

Пример использования:

Допустим, есть список всех шагов в тест-кейсе — здесь подходит List, потому что порядок важен.
Если нужно собрать уникальные ID багов или уникальные логины пользователей, лучше использовать Set.

import java.util.*;

public class Example {
    public static void main(String[] args) {
        List<String> steps = Arrays.asList(
            "Open page",
            "Login",
            "Login",
            "Click button"
        );

        Set<String> uniqueUsers = new HashSet<>();
        uniqueUsers.add("alice");
        uniqueUsers.add("bob");
        uniqueUsers.add("alice");

        System.out.println(steps);
        System.out.println(uniqueUsers);
    }
}

Пояснение кода:

В примере List хранит все элементы, включая повторяющийся "Login", потому что дубликаты допустимы.
Set при добавлении "alice" второй раз не создаёт новую запись, так как элемент уже существует.
В итоге List сохраняет исходную последовательность и повторения, а Set оставляет только уникальные значения.

Ключевые моменты:

  • List сохраняет порядок элементов и допускает дубликаты.
  • Set хранит только уникальные значения.
  • У List есть доступ по индексу, у Set обычно нет.
  • List удобно использовать для последовательностей и сценариев с важным порядком.
  • Set удобно использовать для дедупликации и проверки наличия элемента.
  • Выбор зависит от задачи: порядок и повторы — List, уникальность — Set.