ArrayList vs List
Я видел этот ответ от Jon на инициализации родового объекта с неизвестным типом :
Однако, если вы хотите, чтобы одна коллекция содержала несколько несвязанных типов значений, вам нужно будет использовать
List
Я не сравниваю ArrayList
vs List
, но ArrayList
vs List
, так как оба будут отображать элементы object
типа. Какая польза от использования одного в этом случае?
- Почему у вас нет «List <List >» в Java?
- Интеллектуальный способ удаления элементов из списка при перечислении в C #
- Как проверить, упорядочен ли список?
- XmlSerializer сериализует общий список интерфейса
- Получение элемента списка по индексу
EDIT: здесь нет никакой заботы о безопасности типов, поскольку оба classа представляют object
как свой элемент. По-прежнему нужно отбрасывать object
с требуемым типом. Меня больше интересует все, кроме безопасности.
EDIT: Спасибо Marc Gravell и Шон за ответ. Извините, я могу выбрать только 1 как ответ, поэтому я буду голосовать за обоих.
- В чем разница между HashSet и List ?
- Когда class унаследован от List , XmlSerializer не сериализует другие атрибуты
- Как перебирать List и отображать каждый элемент в Facelets JSF
- Как создать раскрывающийся список?
- Как создать список фреймов данных?
- Сериализация списка пар ключ / значение в XML
- Как удалить элементы из общего списка во время итерации по нему?
- Эмулировать split () с dplyr group_by: вернуть список кадров данных
Вы сможете использовать методы расширения LINQ напрямую с помощью List
, но не с ArrayList
, если вы не OfType
Cast
/ OfType
(благодаря IEnumerable
vs IEnumerable
). Это стоит совсем немного, даже если вам не нужна безопасность типов и т. Д.
Скорость будет примерно одинаковой; структуры будут по-прежнему в коробке и т. д. – так что больше нечего им рассказывать. Кроме того, что я склонен видеть ArrayList
как «oops, кто-то снова пишет устаревший код …»; -p
Одно большое преимущество использования List
заключается в том, что в наши дни большинство кода написано для использования общих classов / интерфейсов. Я подозреваю, что в наши дни большинство людей пишут метод, который принимает IList
вместо IList
. Поскольку ArrayList
не реализует IList
вы не сможете использовать список массивов в этих сценариях.
Я склонен думать о не общих classах / интерфейсах как устаревшем коде и избегать их, когда это возможно.
В этом случае ArrayList
vs. List
то вы не заметите различий в скорости. Могут быть некоторые различия в фактических методах, доступных для каждого из них, особенно в .NET 3.5, и подсчета методов расширения, но это больше связано с тем, что ArrayList несколько устарел, чем что-либо еще.
Да, помимо типизации, общие коллекции могут быть быстрее.
Из MSDN ( http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx )
Пространство имен System.Collections.Generic содержит интерфейсы и classы, которые определяют общие коллекции, которые позволяют пользователям создавать строго типизированные коллекции, которые обеспечивают лучшую безопасность и производительность по типу, чем нестандартные строго типизированные коллекции.
Сделайте некоторые бенчмаркинга, и вы узнаете, что лучше всего работает. Я хочу, чтобы разница была очень маленькой.
Список <> – это типичная версия ArrayList. Это гарантирует, что вы получите тот же тип объекта в коллекции.