Подтвердить что ты не робот

Список против карты в Java

Я не понял смысл Maps на Java. Когда рекомендуется использовать карту вместо списка?

спасибо заранее,

nohereman

4b9b3361

Ответ 1

Карта Java: объект, который сопоставляет ключи значениям. Карта не может содержать дубликаты ключей; каждый ключ может отображать не более одного значения.

Список Java: упорядоченная коллекция (также известная как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в списке вставлен каждый элемент. Пользователь может обращаться к элементам по их целочисленному индексу (положению в списке) и искать элементы в списке.

Разница в том, что они разные. Карта - это отображение ключа/значений, списка списка элементов.

Ответ 2

Скажите, что у вас есть группа студентов с именами и идентификаторами учеников. Если вы поместите их в список, единственный способ найти ученика со студентом_id = 300 - это посмотреть на каждый элемент списка по одному за раз, пока не найдете подходящего ученика.

С помощью карты вы связываете каждый идентификатор студента и экземпляр студента. Теперь вы можете сказать: "Принесите мне 300 студентов" и немедленно верните этого ученика.

Используйте карту, когда вам нужно выбрать конкретных членов из коллекции. Используйте список, если нет смысла это делать.

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

Ответ 4

Зависит от ваших проблем с производительностью. Карта более явно HashMap гарантирует O (1) на вставках и удаляет. A List имеет наихудшее значение O (n), чтобы найти элемент. Поэтому, если бы вы были настолько любезны, чтобы подробно рассказать о своем сценарии, мы можем помочь больше.

Ответ 5

Карта используется как ассоциация ключа и значения. Со списком у вас есть только значения.
Индексы в списке всегда являются int, тогда как в Map вы можете иметь другой объект в качестве ключа.


Ресурсы:

Ответ 6

Я думаю, что это вопрос о том, как вы хотите получить доступ к своим данным. С помощью карты вы можете "напрямую" получить доступ к своим элементам с помощью известного ключа, в списке вам придется его искать, evan, если его отсортировать.

Для сравнения:

List<MyObject> list = new ArrayList<MyObject>();
//Fill up the list
// Want to get object "peter"
for( MyObject m : list ) {
 if( "peter".equals( m.getName() ) {
    // found it
 }
}

На карте вы можете просто ввести

Map<String, MyObject> map = new HashMap<String, MyObject>();
// Fill map
MyObject getIt = map.get("peter");

Если у вас есть данные для обработки и их нужно делать со всеми объектами, список - это то, что вы хотите. Если вы хотите обрабатывать отдельные объекты с хорошо известным ключом, карта лучше. Это не полный ответ (только мои 2...), но я надеюсь, что это может вам помочь.

Ответ 7

Если вы хотите отобразить вместо списка. Имена этих интерфейсов имеют смысл, и вы не должны игнорировать его.

Используйте карту, когда вы хотите, чтобы ваша структура данных представляла отображение для ключей значений. Используйте список, когда вы хотите, чтобы ваши данные сохранялись в произвольном, упорядоченном формате.

Ответ 8

Map и List служат для разных целей.

List содержит набор элементов. Заказывается (вы можете получить товар по индексу).

Map содержит значение key → value. Например. карта человека на позицию: "JBeg" → "программист". И это неупорядочено. Вы можете получить значение по ключу, но не по индексу.

Ответ 9

Карты хранят объекты данных с уникальными ключами, поэтому обеспечивают быстрый доступ к хранимым объектам. Вы можете использовать ConcurrentHashMap для достижения параллелизма в многопоточных средах. Принимая во внимание, что списки могут хранить повторяющиеся данные, и вам нужно перебирать элементы данных, чтобы получить доступ к конкретному элементу, поэтому обеспечить медленный доступ к хранимым объектам. Вы можете выбрать любую структуру данных в зависимости от ваших требований.