Если все, что вы хотите сделать, это просто использовать git-клиент Cygwin с github.com, то есть гораздо более простой способ без необходимости загружать, извлекать, преобразовывать, разбивать файлы сертификатов. Действуйте следующим образом (я предполагаю, что Windows XP с Cygwin и Firefox)
Вот и все.
Конечно, это устанавливает только одну иерархию сертификатов, ту, которая вам нужна для github. Конечно, вы можете использовать этот метод с любым другим сайтом без необходимости устанавливать 200 сертификатов сайтов, которым вы (не обязательно) доверяете.
Если это не отсортировано, но порядок необходимо сохранить , тогда у вас может быть отдельный Dictionary
, который будет содержать индекс для каждого элемента.
Если вам нужен отсортированный список, затем проверьте предыдущие сообщения - вы можете использовать SortedList
в .Net 3.5 или отсортировать его и использовать BinarySearch в более старых версиях .Net.
[Edit] Вы можете найти похожие примеры в Интернете, например: OrderedList . Этот внутренний использует ArrayList и HashTable, но вы можете легко сделать его универсальным.
[Edit2] Упс ... приведенный мной пример не реализует IndexOf, как я описал в начале ... Но вы поняли, что один список должен быть упорядочен, а другой используется для быстрого поиска.
Отсортируйте его, используя List
, затем используйте метод List
: "Поиск по всему sorted List (T)
для элемента [...] Этот метод представляет собой операцию O (log n), где n - количество элементов в диапазоне. "
Если порядок объектов в списке имеет , который нужно сохранить, то единственный способ, который я могу придумать, где вы собираетесь получить максимально быстрый доступ, - это сообщить объекту, какова его позиция в индексе, когда он добавлен и т. д. в список. Таким образом вы можете запросить объект, чтобы получить его индекс в списке. Обратной стороной, и, на мой взгляд, большим недостатком, является то, что теперь вставленные объекты зависят от списка.
Нет причин, по которым вам когда-либо нужно было заказывать хеш-список ... в этом-то и дело. Тем не менее, хеш-список должен с готовностью помочь.
Я предлагаю использовать класс SortedList
или SortedDictionary
, если вам нужно отсортировать элементы. Различия заключаются в следующем.
SortedList
использует меньше памяти, чемSortedDictionary
.
SortedDictionary
имеет более быструю вставку и операции по удалению несортированные данные: O (log n) в отличие от O (n) дляSortedList
.Если список заполняется сразу из отсортированных данных,
SortedList
равно быстрее, чемSortedDictionary
.
Если вы просто хотите сохранить порядок, вы можете просто использовать Dictionary
и сохранить элемент как ключ и индекс как значение. Недостатком является то, что переупорядочивание элементов, вставка или удаление являются довольно дорогостоящими.
Я не уверен в особенностях C #, но вы могли бы отсортировать его (QuickSort?), А затем использовать двоичный поиск по нему ( Производительность BinarySearch равна O (log2 (N)), по сравнению с последовательностью, например indexOf, которая равна O (n)). (ВАЖНО: для двоичного поиска ваша структура должна быть отсортирована)
Когда вы вставляете элементы в свою структуру данных, вы также можете попробовать модифицированный двоичный поиск, чтобы найти точку вставки, или, если вы добавляете большую группу, вы должны добавить их, а затем отсортировать.
Единственная проблема в том, что вставка будет медленнее.
Если вы используете класс List, вы можете использовать метод Sort для его сортировки после первоначального заполнения, затем используйте метод BinarySearch для поиска соответствующего элемента.