Логотип
Vicking.narod.ru
Программирование
Исходные тексты и утилиты

Быстрый поиск строк в списке. Модуль FastList.


 
 

В данном обзоре будет рассмотрен созданный мною модуль FastList. В нем содержатся классы для быстрого поиска строк в списке (TStrings). Идея такова, что при поиске не перебирается каждая строка. Здесь строится дерево из списка слов, а далее по этому дереву происходит поиск. Для списка, состоящего из 100 строк (по 8 случайных символов), поиск последней строки с помощью FastList оказался 80 раз быстрее, чем обычный перебор, организованный в TStringList. А если у нас не 100 строк, а, скажем, 100 000. Тогда данный модуль просто незаменим.

Теперь рассмотрим использование модуля. Его достаточно добавить в проект и подключить к нужному модулю. Так как он написан в Delphi, то он легко может быть использован и C++Builder. Итак, подключили модуль.

uses FastList; 

Теперь у нас в распоряжении класс TFastList. Рассмотрим наиболее важные члены класса:

Название
Тип
Описание
Clear
метод
Очищает дерево поиска
IndexOf
метод
Находит слово в списке
Strings
свойство
Содержит простой список слов
Compile
метод
Строит дерево поиска по списку

Чтобы использовать поиск строк в списке, создаем экземпляр объекта TFastList. Заносим любым способом слова в свойство Strings и вызываем метод Compile. Теперь мы можем смело искать строку в списке, вызвав метод IndexOf и передав в него искомую строку. Рассмотрим пример:

procedure TForm1.Button1Click(Sender: TObject);
var
  fl: TFastList;
begin
  fl := TFastList.Create;
  fl.Strings.LoadFromFile('Words.txt');
  fl.Compile;
  Caption := IntToStr(fl.IndexOf(Edit1.Text));
  fl.Free;
end;
 

У кого фантазия получше, тот найдет более интересное применение данному компоненту.

Да самое главное, скачать модуль вы можете здесь: fastlist.zip (2 Кб) или в разделе Компоненты.

 


© Зинкевич Виктор, 2005 г.

 



Hosted by uCoz