Когда использовать HashMap через LinkedList или ArrayList и наоборот
в чем причина, по которой мы не всегда можем использовать HashMap, хотя он намного эффективнее,чем ArrayList или LinkedList в операциях добавления, удаления, также независимо от количества элементов.
я погуглил его и нашел некоторые причины, но всегда был обходной путь для использования HashMap, с преимуществами, все еще живыми.
2 ответов
списки представляют собой последовательный порядок элементов. Карты используются для представления коллекции пар ключ / значение.
хотя вы можете использовать карту в качестве списка,есть некоторые определенные недостатки этого.
порядок: - Список по определению упорядочен. Вы добавляете элементы, а затем можете выполнить итерацию по списку в том порядке, в котором вы вставили элементы. При добавлении элементов в HashMap не гарантируется получение предметы в том же порядке, что и вы. Существуют подклассы HashMap, такие как LinkedHashMap, которые будут поддерживать порядок, но в общем порядке не гарантируется картой.
семантика ключа/значения: - Цель карты-хранить элементы на основе ключа, который может быть использован для извлечения элемента в более поздний момент. Аналогичная функциональность может быть достигнута только со списком в ограниченном случае, когда ключом является позиция в списке.
читабельность кода Рассмотрим следующие примеры.
// Adding to a List
list.add(myObject); // adds to the end of the list
map.put(myKey, myObject); // sure, you can do this, but what is myKey?
map.put("1", myObject); // you could use the position as a key but why?
// Iterating through the items
for (Object o : myList) // nice and easy
for (Object o : myMap.values()) // more code and the order is not guaranteed
функции сбора Некоторые большие функции утилиты доступны для списков через класс Collections. Например...
// Randomize the list
Collections.shuffle(myList);
// Sort the list
Collections.sort(myList, myComparator);
надеюсь, это поможет,
списки и карты-это разные структуры данных. Карты используются, когда вы хотите связать ключ со значением, а списки-это упорядоченная коллекция.
Map-это интерфейс в Java Collection Framework, а HashMap - одна из реализаций интерфейса карты. HashMap эффективны для поиска значения на основе ключа и вставки и удаления значений на основе ключа. Записи HashMap не упорядочены.
ArrayList и LinkedList являются реализацией интерфейса списка. LinkedList обеспечивает последовательный доступ и, как правило, более эффективен при вставке и удалении элементов в списке, однако он менее эффективен при доступе к элементам в списке. ArrayList обеспечивает случайный доступ и более эффективен при доступе к элементам, но обычно медленнее при вставке и удалении элементов.