Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Selecting a Collection Class
Be sure to choose your System.Collections class carefully. Using the wrong type can restrict your use of the collection. Consider the following questions: · Do you need a sequential list where the element is typically discarded after its value is retrieved? · If yes, consider using the Queue class or the Queue<(Of <(T>)>) generic class if you need first-in-first-out (FIFO) behavior. Consider using the Stack class or the Stack<(Of <(T>)>) generic class if you need last-in-first-out (LIFO) behavior. · If not, consider using the other collections. · Do you need to access the elements in a certain order, such as FIFO, LIFO, or random? · The Queue class and the Queue<(Of <(T>)>) generic class offer FIFO access. · The Stack class and the Stack<(Of <(T>)>) generic class offer LIFO access. · The LinkedList<(Of <(T>)>) generic class allows sequential access either from the head to the tail or from the tail to the head. · The rest of the collections offer random access. · Do you need to access each element by index? · The ArrayList and StringCollection classes and the List<(Of <(T>)>) generic class offer access to their elements by the zero-based index of the element. · The Hashtable, SortedList, ListDictionary, and StringDictionary classes, and the Dictionary<(Of <(TKey, TValue>)>) and SortedDictionary<(Of <(TKey, TValue>)>) generic classes offer access to their elements by the key of the element. · The NameObjectCollectionBase and NameValueCollection classes, and the KeyedCollection<(Of <(TKey, TItem>)>) and SortedList<(Of <(TKey, TValue>)>) generic classes offer access to their elements by either the zero-based index or the key of the element.
Выбор класса коллекции Необходимо тщательно выбирать ваш класс System.Collections. Использование неправильного типа может привести к ограничению возможностей использования коллекции. Необходимо ответить на следующие вопросы: · Нужен ли последовательный список, элемент которого обычно удаляется сразу после извлечения его значения? · Если да, то рассмотрите возможность использования класса Queue или универсального класса Queue<(Of <(T>)>), если требуется поведение по принципу "первым поступил — первым обслужен" (FIFO). Рассмотрите возможность использования класса Stack или универсального класса Stack<(Of <(T>)>), если требуется поведение по принципу "последним поступил — первым обслужен" (LIFO). · Если нет, то следует выбирать из остальных типов коллекций. · Нужен ли доступ к элементам в определенном порядке (FIFO, LIFO) или в произвольным порядке? · Класс Queue и универсальный класс Queue<(Of <(T>)>) предоставляют доступ по принципу FIFO. · Класс Stack и универсальный класс Stack<(Of <(T>)>) предоставляют доступ по принципу LIFO. · Универсальный класс LinkedList<(Of <(T>)>) предоставляет последовательный доступ от начала к концу списка или наоборот. · Остальные коллекции предоставляют произвольный доступ.
· Необходимо ли иметь доступ к каждому элементу по индексу? · Классы ArrayList и StringCollection, и универсальный класс List<(Of <(T>)>) предоставляют доступ к своим элементам по индексу с отсчетом от нуля. · Классы Hashtable, SortedList, ListDictionary и StringDictionary, а также универсальные классы Dictionary<(Of <(TKey, TValue>)>) и SortedDictionary<(Of <(TKey, TValue>)>) предоставляют доступ к своим элементам по ключу. · Классы NameObjectCollectionBase и NameValueCollection, а также универсальные классы KeyedCollection<(Of <(TKey, TItem>)>) и SortedList<(Of <(TKey, TValue>)>) предоставляют доступ к своим элементам по индексу с отсчетом от нуля или по ключу.
· Will each element contain one value, a combination of one key and one value, or a combination of one key and multiple values? · One value: Use any of the collections based on the IList interface or the IList<(Of <(T>)>) generic interface. · One key and one value: Use any of the collections based on the IDictionary interface or the IDictionary<(Of <(TKey, TValue>)>) generic interface. · One value with embedded key: Use the KeyedCollection<(Of <(TKey, TItem>)>) generic class. · One key and multiple values: Use the NameValueCollection class. · Do you need to sort the elements differently from how they were entered? · The Hashtable class sorts its elements by their hash codes. · The SortedList class and the SortedDictionary<(Of <(TKey, TValue>)>) and SortedList<(Of <(TKey, TValue>)>) generic classes sort their elements by the key, based on implementations of the IComparer interface and the IComparer<(Of <(T>)>) generic interface. · ArrayList provides a Sort method that takes an IComparer implementation as a parameter. Its generic counterpart, the List<(Of <(T>)>) generic class, provides a Sort method that takes an implementation of the IComparer<(Of <(T>)>) generic interface as a parameter. · Do you need fast searches and retrieval of information? · ListDictionary is faster than Hashtable for small collections (10 items or fewer). The Dictionary<(Of <(TKey, TValue>)>) generic class provides faster lookup than the SortedDictionary<(Of <(TKey, TValue>)>) generic class. · Do you need collections that accept only strings? · StringCollection (based on IList) and StringDictionary (based on IDictionary) are in the System.Collections.Specialized namespace. · In addition, you can use any of the generic collection classes in the System.Collections.Generic namespace as strongly typed string collections by specifying the String class for their generic type arguments.
· Будет ли каждый элемент содержать только одно значение, сочетание из одного ключа и одного значения или сочетание из одного ключа и нескольких значений? · Одно значение. Можно использовать любую из коллекций, основанных на интерфейсе IList или на универсальном интерфейсе IList<(Of <(T>)>). · Один ключ и одно значение. Можно использовать любую из коллекций, основанных на интерфейсе IDictionary или на универсальном интерфейсе IDictionary<(Of <(TKey, TValue>)>).
· Одно значение с внедренным ключом. Можно использовать универсальный класс KeyedCollection<(Of <(TKey, TItem>)>). · Один ключ и несколько значений. Можно использовать класс NameValueCollection. · Нужна ли возможность отсортировать элементы в порядке, отличном от порядка их поступления? · Класс Hashtable сортирует свои элементы по их хэш-коду. · Класс SortedList и универсальные классы SortedDictionary<(Of <(TKey, TValue>)>) и SortedList<(Of <(TKey, TValue>)>) сортируют свои элементы по их ключам на основе реализации интерфейса IComparer и универсального интерфейса IComparer<(Of <(T>)>). · ArrayList предоставляет метод Sort, который принимает реализацию IComparer в качестве параметра. Его универсальный аналог — универсальный класс List<(Of <(T>)>) предоставляет метод Sort, который принимает реализацию универсального интерфейса IComparer<(Of <(T>)>) в качестве параметра. · Необходимы ли быстрый поиск и извлечение данных? · ListDictionary быстрее, чем Hashtable для небольших коллекций (10 элементов или меньше). Универсальный класс Dictionary<(Of <(TKey, TValue>)>) предоставляет более быстрый просмотр, чем универсальный класс SortedDictionary<(Of <(TKey, TValue>)>). · Нужна ли коллекция только для хранения строк? · Классы StringCollection (основанный на IList) и StringDictionary (основанный на IDictionary) находятся в пространстве имен System.Collections.Specialized. · Кроме того, можно использовать любой из универсальных классов коллекций в пространстве имен System.Collections.Generic как строго типизированную строковую коллекцию, указав класс String в качестве аргумента универсального типа.
|
||||||
Последнее изменение этой страницы: 2017-01-19; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.138.230 (0.008 с.) |