Как правило, если вам нужна производительность поиска по индексу BEST, лучше сначала создать список, а затем превратить его в массив, заплатив сначала небольшое наказание, но избегая позже. Если проблема заключается в том, что вы будете постоянно добавлять новые данные и удалять старые, тогда вы можете использовать ArrayList или List для удобства, но имейте в виду, что это просто особые массивы. Когда они «растут», они выделяют совершенно новый массив и копируют в него все, что очень медленно.
ArrayList - это просто массив, который увеличивается при необходимости.
Добавить амортизируется O (1), просто будьте осторожны, чтобы убедиться, что изменение размера не произойдет в плохое время.
Insert is O (n), все элементы справа должны быть перемещены.
Удалить - это O (n), все элементы справа должны быть перемещены.
Также важно помнить, что Список не является связанным списком. Это просто типизированный ArrayList. Документация List отмечает, что в большинстве случаев она работает лучше, но не объясняет почему.
Лучше всего выбрать структуру данных, соответствующую вашей проблеме. Это зависит от многих вещей, поэтому вы можете просмотреть пространство имен System.Collections.Generic .
В этом конкретном случае я бы сказал, что если вы сможете найти хорошее значение ключа, то Словарь будет вашим лучшим выбором. Он имеет вставки и удаления, что приближается к O (1). Однако, даже со словарем, вы должны быть осторожны, чтобы не позволить ему изменить размер своего внутреннего массива (операция O (n)). Лучше дать им много места, указав в конструкторе начальную емкость, превышающую ожидаемую для использования.
-Rick