Когда использовать 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 обеспечивает случайный доступ и более эффективен при доступе к элементам, но обычно медленнее при вставке и удалении элементов.