У меня есть большой список строк (около 5-20 тысяч записей), которые мне нужно заказать, а также удалить дубликаты.
Я сделал это двумя способами: один раз с помощью хеш-набора и один раз исключительно с помощью linq. Тесты с таким количеством записей не показали большой разницы, но мне интересно, какой способ и, следовательно, какой метод будет лучше подходить.
Для способов (myList имеет тип данных List):
Linq: я использую 1 оператор linq, чтобы упорядочить список и получить из него различные значения.
myList = myList.OrderBy(q => q).Distinct().ToList();
Hashset: я использую hashset для удаления всех дубликатов, а затем упорядочиваю список
myList = new HashSet<String>(myList).ToList<String>();
myList = myList.OrderBy(q => q).ToList();
Как я уже сказал, тесты, которые я провел, потребляли примерно одинаковое время для обоих методов, но мне все еще интересно, лучше ли один метод, чем другой, и если да, то почему (код предназначен для высокопроизводительной части, и мне нужно получать каждую миллисекунду, которую я можно из него).
Linq
выглядит более читаемым. Может сначалаDistinct()
, потомOrderBy()
. - person Corak   schedule 21.08.2014"1"
до"9"
в начале (или конце) каждой строки? - person Corak   schedule 21.08.2014SortedSet<String>
, он уникален и отсортирован по умолчанию? – См. DEMO. - Я не знаю, быстрее ли это, чем сортировка после добавления элементов, но, возможно, вы могли бы добавить это в свои тесты и проверить. - person Nope   schedule 21.08.2014SortedSet<string>
делает то, что вам нужно, это может быть хорошим выбором вместо использования LINQ сверху? - person Nope   schedule 21.08.2014