2012-05-03 4 views
5

В java, List и Map используются в коллекциях. Но я не мог понять, в каких ситуациях мы должны использовать List и какое время использовать Map. В чем основное отличие между ними?Как список отличается от карты?

+0

Путь получить ответ skeet! – chiliNUT

ответ

11

Теперь было бы хорошее время, чтобы прочитать Java collections tutorial - но в основном, список представляет собой упорядоченную последовательность элементов, которые вы можете получить доступ по индексу, и карта является обычно неупорядоченный отображение ключей к значениям. (Некоторые карты сохраняют порядок вставки, но это специфично для реализации.)

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

Существует также Set, который является (обычно неупорядоченным) набором отдельных элементов.

4

Map для Key:Value пара данных типа. Например, если вы хотите нанести номер студенческих рулонов на свои имена.

List предназначен для простого упорядоченного набора элементов, которые допускают дубликаты. , например, для представления списка имен студентов.

0

List - это всего лишь упорядоченный коллектив (последовательность). Проверьте это list documentation. Вы можете получить доступ к элементам по их целочисленному индексу (положению в списке) и искать элементы в списке. Также списки позволяют дублировать элементы и несколько элементов NULL.

Map - это объект, который сопоставляет значения с ключами. Проверьте это map documentation. Карта не может содержать дубликаты ключей; каждый ключ может отображать не более одного значения.

1

Интерфейс карты Карта заботится об уникальных идентификаторах. Вы сопоставляете уникальный ключ (идентификатор) с определенным значением , где ключ и значение, конечно, являются объектами. Реализации карты позволяют делать такие вещи, как поиск значения на основе ключа, запрос коллекции только значений или запрос коллекции только ключей. Подобно наборам, Карты полагаются на метод equals(), чтобы определить, являются ли двумя ключами одинаковыми или разными.

Список интерфейсов Список интересует индекс. Единственное, что List имеет в том, что не-списки не имеют , это набор методов, связанных с индексом. Эти ключевые методы включают такие вещи, как get (int index), indexOf (Object o), add (int index, Object obj) и так on. Все три реализации списка упорядочены по позиции индекса - позиция, которую определяет либо путем установки объекта по определенному индексу, либо путем добавления его без с указанием позиции, и в этом случае объект добавляется в конец.

1

list - это связанный список, в котором каждый объект подключен к следующему через указатели. время, необходимое для вставки нового объекта в список, равно O (1), но остальные операции на нем занимают больше времени.

Хорошая вещь об этом заключается в том, что требуется ровно столько объема памяти, сколько вам нужно, и даже не на байте больше.

Карты представляют собой структуру данных, которая имеет массив, и каждая запись в массив вычисляется с помощью hashFunction(key), который вычисляет местоположение в соответствии с ключом. почти каждая операция в Map taks O (1) (кроме вставки, когда есть 2 идентичных ключа), но сложность пространства довольно велика.

для больше чтения попробовать Википедии HashMap и linked list

+0

HashMap и LinkedList - это реализация интерфейса Map и List, это только один конкретный случай этих коллекций. –

+0

@GuillaumePolet, вы правы, но идея важна. понимание разницы между хэшмапом и связанным списком является основой недооценки разницы между MAP и LIST – thepoosh

1

HashList представляет собой структуру данных, хранения объектов в хэш-таблице и list.it представляет собой комбинацию из HashMap и дважды связанный список. acess будет быстрее. HashMap - это реализация хэш-таблицы интерфейса карты, такая же, как HashTable, за исключением того, что она несинхронизирована и допускает нулевые значения. Список представляет собой упорядоченную коллекцию, и она допускает в ней нули и дубликаты. возможно позиционирование. Set - это коллекция, которая не позволяет дублировать, она может содержать не более одного нулевого элемента. так же, как и наш математический набор.

0
List - This datastructure is used to contain list of elements. 
     In case you need list of elements and the list may contain duplicate values, 
     then you have to use List. 

Map - It contains data as key value pair. When you have to store data 
     in key value pair,so that latter you can retrieve data using the key, 
     you have to use Map data structure. 

реализация List - ArrayList, LinkedList
Карта реализация - HashMap, TreeMap

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

Смежные вопросы