Текущий архив: 2002.08.29;
Скачать: CL | DM;
ВнизAlgoritm proverki povtorov Найти похожие ветки
← →
lensky (2002-08-17 20:02) [0]Ideia, nushno otseivat" povtory strok
var
ListedDomains : TStringList;
function TFrame1.AddDomain(name: string): integer;
begin
if ((name<>"") and (ListedDomains.IndexOf(name)=-1)) then
begin
ListedDomains.Add(name);
DoSomething;
end
else Result:=0;
end;
S ukazanoi proverkoi, pri liste iz 8000 strok, rabotaet na 40 secund dol"she na moem skromnom kompe...
Est" li bolie optimal"niy metod dlia otseivan"ia odinakovih strok?
← →
wicked (2002-08-17 20:11) [1]для твоего случая придуманы свойства
Sorted - вставка записей в определённом порядке и контроль дубликатов строк... установи его в true...
Duplicates - поведение при вставке дубликата... установи его в dupIgnore...
подробности в справке...
← →
lensky (2002-08-17 21:02) [2]da, spasibo, horoshaia ideia, tol"ko Duplicates dolshen bit" dupError, tk mne ne nushen sam stringlist, a nushno poniat" bila li takai strochka voobshe ili net, a s dupIgnore etogo ne sdelat" IMHO
← →
lipskiy (2002-08-18 00:10) [3]Для исключения дупликатов я использую следующий алгоритм (придумал сам, поэтому он не обязательно оптимален, но работает быстро).
Во-первых, отсортируй список.
Потом создай список-буфер (второй экземпляр).
И переписывай из одного списка в другой, по условию, что следующая строка не равна предыдущей.
Все просто.
← →
lipskiy (2002-08-18 00:12) [4]Есть правда один момент - сортировка стринглиста не чувствительна к регистру и она не отсортирует сначала большие, потом маленькие, поэтому при сравнении строк надо делать LowerCase.
← →
MrBeer (2002-08-18 04:03) [5]esli ti naprimer sostavlaesh etot svoi list iz vneshego iztochnika, to variant s sortirovkoi i udaleniem pri dostatochno bolshih razmerah dannih daleko ne samii optimalnii (osobenno esli mnogo dublikatov). V etom sluchae namnogo bistree budet vospolzovatjsa hash listom. (bolshe informacii na google.com)
best regards.
Страницы: 1 вся ветка
Текущий архив: 2002.08.29;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.005 c