Вы вообще не должны использовать ArrayList
вообще, так как у вас есть строго напечатанный List<T>
для использования.
То, что вы используете, зависит от того, как вам нужен доступ к данным. Список хранит последовательный список элементов, в то время как словарь хранит элементы, идентифицированные ключом. (Вы все еще можете читать элементы из Словаря последовательно, но порядок не сохраняется.)
Производительность практически одинакова, оба используют внутренние массивы для хранения фактических данных. Когда они достигают своей емкости, они выделяют новый больший массив и копируют в него данные. Если вы знаете, насколько большой будет коллекция, вы должны указать емкость при ее создании, чтобы она не изменяла свой размер.