How to subtract one huge list from another efficiently in C#

Или использовать Ваше число подрывной деятельности запятой номера версии 'мысли'.. z. B.:

1.0.101//пересмотр 101, выпуск

или 1.0.101-090303//с датой выпуска, я использую это

24
задан Shackles 23 February 2011 в 14:04
поделиться

2 ответа

LINQ может помочь:

itemsToAdd.Except(idList)

Ваш код медленный, потому что List<T>.Contains - O(n). Таким образом, ваша общая стоимость составляет O(itemsToAdd.Count*idList.Count).

Вы можете превратить idList в HashSet<T> с O(1) .Contains. Или просто используйте метод расширения Linq .Except, который сделает это за вас.

Обратите внимание, что .Except также удалит все дубликаты с левой стороны. то есть новый int[]{1,1,2}.Except(new int[]{2}) приведет только к {1}, а второй 1 был удален. Но я предполагаю, что в вашем случае это не проблема, потому что идентификаторы обычно уникальны.

23
ответ дан 28 November 2019 в 23:17
поделиться

Вы должны использовать два HashSet<int> с.
Обратите внимание, что они уникальны и неупорядочены.

2
ответ дан 28 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: