Почему SortedList и List используют массивы и почему LinkedList используется не так часто?

На мой взгляд, List в основном реализован с использованием LinkedList , в то время как обычный ] Массив реализован как непрерывные блоки. Я всегда использовал List , потому что он находится в пространстве имен Generic и потому что я думал, что он использует распределение динамической памяти - но я ошибался.

Вчера я видел реализация List с использованием Reflector и обнаружила, что это на самом деле массив T ( T [] ). Есть много Array. Скопируйте , манипулируя каждым элементом в List . Например, когда вы используете Insert , он создает новую память и копирует все элементы до / после вставленных элементов. Так что мне кажется, что использование List очень дорогое.

Я также видел SortedList . Я не уверен, почему SortedList также реализует внутри себя массив. Вам не кажется, что SortedList было бы ужасно использовать массив, так как вам нужно сортировать список каждый раз, когда происходит незначительное изменение списка List ?

Мне также интересно, почему Список настолько популярен, что большинство людей используют его вместо того, чтобы искать LinkedList . Это только из-за гибкости индексатора?

5
задан nawfal 6 July 2014 в 05:53
поделиться