Я новичок в попытке использовать интерфейсы IEnumerable. Я всегда просто писал собственную сортировку хешей вместо того, чтобы пытаться использовать собственный синтаксис, потому что я был несколько смущен реализацией. Я пытаюсь определить, могу ли я собрать список в отсортированном формате с помощью BinarySearch или некоторой подобной функции. Есть функция, которая вернет ближайший возможный индекс для вставки нового элемента в список, чтобы список всегда сортировался через хэш-дерево каждый раз, когда вы вставляете элемент?Может ли IComparer использоваться для хеширования списка, поскольку он заполнен?
Когда я использую BinarySearch, он всегда возвращает -1, если нет совпадения. Я бы предпочел, чтобы он вернул ближайший возможный индекс. Есть ли способ сделать это с помощью родных интерфейсов IEnumerable? Я бы предпочел не называть «Сортировка (IComparer)» каждый раз, когда я хочу ссылаться на Список.
Вкратце: можно ли использовать BinarySearch или какую-либо эквивалентную функцию при добавлении нового элемента в список, чтобы найти лучший индекс для «Вставить (Item, index)» в список?
Спасибо, я знал только о «SortedList», которого я не хотел. Я знал, что там должен быть класс, который сделал это. – ThisHandleNotInUse
Хммм ... MSDN говорит, что «SortedSet» использует линейный шаблон поиска ... разве это не побеждает цель использования IComparer? Или есть причина, по которой она должна быть линейной, которая уклоняется от моих рассуждений относительно интерфейса IComparer? Прямо сейчас, все классы «IComparer», как классы, чувствуют себя «черным ящиком» для меня - я думаю, вы знаете, что я имею в виду ... – ThisHandleNotInUse
IComparer просто возвращает единственный результат сравнения для пары значений; он не предоставляет никакой другой информации, такой как хеширование. Хеширование обеспечивается методом [Object.GetHashCode] (http://msdn.microsoft.com/en-us/library/system.object.gethashcode%28v=vs.110%29.aspx), по крайней мере, когда выведение класс реализует его. Вот как такие классы, как «Словарь» генерируют свои хэши –