Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 167; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.220 (0.006 с.) |