
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.91] |
![]() |
|
Сообщ.
#1
,
|
|
|
Добрый день.
есть следующая ситуация: 1) список строк1 (TStringList), число строк от 1000 до 2000000, формат строки 665:687686:12334456(это пример), где : разделитель 2) список строк2 (TStringList), число строк от 0 до 255, формат строки 12334456(это пример) 3) цикл FOR список1, где отделяется третий параметр (12334456), внутри цикл FOR где выводится строка, если строки в циклах совпадают, тогда строка1 (665:687686:12334456) перезаписывается в хранилище строк с именем третьего параметра (12334456) таким образом может возникнуть до 256 хранилищ с числом строк от 1000 до 140000 строк в каждом. в общем это раздел одного большого массива строк на некоторое количество массивом по заданному параметру (список строк2) вопрос: на основе чего можно сделать такое хранилище строк? TListBox? динамический многомерный массив? что то еще? надо учесть быстродействие, по максимуму необходимо Заранее спасибо за ответы |
Сообщ.
#2
,
|
|
|
Приветствую. Я думаю тут следует покопаться в сторону деревьев, если нужно максимальное быстродействие.
|
Сообщ.
#3
,
|
|
|
Pcrepair
![]() ![]() var MyDictionary: TDictionary<string, TStringList>; begin MyDictionary := TDictionary<string, TStringList>.Create; // Ваш код для перебора списка строк1 и записи в словарь, например: for i := 0 to List1.Count - 1 do begin // Получите третий параметр ThirdParam := ExtractThirdParam(List1[i]); // Добавление в словарь if not MyDictionary.ContainsKey(ThirdParam) then MyDictionary.Add(ThirdParam, TStringList.Create); MyDictionary[ThirdParam].Add(List1[i]); end; // Не забудьте освободить память в конце for Value in MyDictionary.Values do Value.Free; MyDictionary.Free; end; |