Более быстрые способы искать Список C# <Строка> подстроки

Понятие полезно все вокруг в объектно-ориентированном программировании. Мне я думаю об интерфейсе как о контракте. Так долго мой класс и Ваш класс договариваются об этом контракте сигнатуры метода, с которым мы можем "соединить интерфейсом". Что касается абстрактных классов те я вижу как больше базовых классов, которые гасят некоторые методы, и я должен заполнить детали.

5
задан Luk 11 July 2011 в 15:28
поделиться

5 ответов

Используйте выражения lamba, если это List :

list.RemoveAll(x => x.Contains(line_to_delete));
6
ответ дан 18 December 2019 в 11:58
поделиться

Самый простой способ - использовать:

var result = list.Where(x => !x.Contains(line_to_delete))

Во-первых, убедитесь, что это недостаточно эффективно. Если это не так, вам нужно прибегнуть к расширенным структурам данных для представления ваших строк, таким как trie . В C # нет встроенной поддержки подобных вещей.

2
ответ дан 18 December 2019 в 11:58
поделиться

Лучше всего отсортировать список и использовать бинарный поиск. SortedList сделает это за вас .. Таким образом, вы можете получить производительность O (log (n))

3
ответ дан 18 December 2019 в 11:58
поделиться
        List<String> regKey = new List<String> { "test1", "test2" };
        var toDelete = regKey.Where(u => u.Contains(line_to_delete)).SingleOrDefault();
        if (toDelete != null)
            regKey.Remove(toDelete);

или

regkey.RemoveAll(k => k.Contains(line_to_delete));

Это сделает ваше удаление более читабельным, но я не уверен в производительности по сравнению с вашим текущим методом.

2
ответ дан 18 December 2019 в 11:58
поделиться

Я думаю, что лучше использовать indexOf, чем contains, что ускоряет поиск

, поэтому используйте:

regkey.RemoveAll(k => k.IndexOf(line_to_delete) >=0);
2
ответ дан 18 December 2019 в 11:58
поделиться
Другие вопросы по тегам:

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