Карта - это карта или «ассоциативный массив» . Имеет раскладку key-> value. Список, с другой стороны, представляет собой список , который представляет собой упорядоченную коллекцию элементов.
Более прямое сравнение, возможно, будет между Set и List: оба эти значения хранят, где список явно упорядочен (вы можете получить элемент # x), а набор (как правило) не упорядочен (хорошо, если только это не SortedSet , в этом случае порядок итераций будет упорядочен компаратором).
Двумя наиболее распространенными реализациями для Set и List являются HashSet и ArrayList . Чтобы проверить, принадлежит ли элемент в массив (содержит (элемент)), реализация выполняет итерацию по всем его элементам, проверяя, нашел ли элемент элемент с помощью метода equals (). Чтобы проверить, принадлежит ли элемент в хэш-набор, сначала вычисляется hashCode () элемента, затем он «прямо» попадает в позицию, в которой должен находиться этот элемент, и проверяет, есть ли он там.
Таким образом, существенной разницей между ArrayList и HashSet является скорость в игре () .
В списке вы можете запросить элемент # x, в дополнение к тому, что вы можете сделать в наборе, а именно: добавить, удалить, спросить-присутствует (содержит) и выполнить итерацию по всем элементам.
На карте вы можете запросить элемент по его ключу, а не по индексу, как в случае со списком.
HashSet в настоящее время реализуется просто с помощью HashMap, где часть значения отношения ключ-> значение не используется. Это абсолютно абсурдно и не имеет никакого смысла, кроме как тратить как минимум 4 байта, что может привести к 12 для всех без исключения элементов, вставленных в HashSet.