ArrayList
и LinkedList
являются реализациями абстракции List
. Первый содержит элементы списка во внутреннем массиве, который автоматически перераспределяется по мере необходимости, чтобы освободить место для новых элементов. Второй создает двусвязный список ячеек держателей, каждая из которых ссылается на элемент списка. Хотя соответствующие операции имеют идентичную семантику, они значительно отличаются по характеристикам производительности. Например:
Операция get(int)
для ArrayList
занимает постоянное время, но это занимает время, пропорциональное длине списка для LinkedList
.
Удаление элемента через Iterator.remove()
занимает постоянное время для LinkedList
, но это занимает время, пропорциональное длине списка для ArrayList
.
HashMap
и THashMap
- обе реализации абстракции Map
, которые используют хеш-таблицы. Разница заключается в форме структуры данных хеш-таблицы, используемой в каждом случае. Класс HashMap
использует закрытую адресацию , что означает, что каждый сегмент таблицы указывает на отдельный связанный список элементов. Класс THashMap
использует открытую адресацию , что означает, что элементы, которые хэшируют один и тот же сегмент, хранятся в самой таблице. В итоге THashMap
использует меньше памяти и быстрее, чем HashMap
для большинства операций, но намного медленнее, если вам нужен набор пар ключ / значение на карте.
Подробнее читайте в хорошем учебнике по структурам данных. Если это не так, ищите концепции в Википедии. Наконец, взгляните на исходный код соответствующих классов.