Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.24;
Скачать: CL | DM;

Вниз

Быстрое удаление дупликатов   Найти похожие ветки 

 
perov ©   (2002-06-11 10:05) [0]

есть stringlist, содержащий несколько десятков тысяч строк
как можно быстро удалить дупликаты строк?
сортировку использовать нельзя...


 
MBo ©   (2002-06-11 10:39) [1]

for i:=StrinList.Count-1 downto 1 do
if StringList.IndexOf(StringList[i])<>i then
StringList.Delete(i);


 
AFROLOV ©   (2002-06-11 10:46) [2]

Есть такое предложение.
1. создаем новый список
2. в него записываем строку и ее номер в с тринглист.
3. сортируем новый список по строковому полю.
4. наполнение нового списка делаем следующим образом:

tmpStr:="";
for i:=0 to SortedList.Count do
begin
if SortedList[i].Str<>tmpStr then
begin
tmpStr:=SortedList[i].Str;
NewList[SortedList[i].Index]:=tmpStr;
end;

end;


 
kaif ©   (2002-06-11 11:19) [3]

А нельзя при добавлении в исходный список просто не пускать туда дубликат?
Например:
if stringlist.IndexOf(s) = -1 then
stringlist.Add(s);
Тогда потом не придется их отыскивать...


 
Romkin ©   (2002-06-11 11:28) [4]

Сделать другой TStringList Sorted := true
потом присвоить StringList2.Text := StringList1.text;
Получиться упорядоченный список
Пройти этот список и удалить дупликаты в исходном


 
perov ©   (2002-06-11 11:32) [5]

to kaif
наверное можно, но придется перелопачивать большой проект (чужой)
to afrolov
примерно так и поступил, только с использованием двух дополнительных списоков: один отсортированный уникальный. в него из первого копируются данные . получаем список с уникальными значениями. потом из исходного копируем только те строки, номера которых содержаться во втором списке



Страницы: 1 вся ветка

Текущий архив: 2002.06.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
7-77622
Ff
2002-03-27 09:10
2002.06.24
Как программно отформатировать логический диск?


1-77463
Artem Bakulin
2002-06-11 20:29
2002.06.24
Изменение свойств нескольких объектов


14-77563
cyborg
2002-05-19 19:18
2002.06.24
CoolTrayIcon, ver. 4.0.1- Delphi вылетает!


1-77458
Aleksandr
2002-06-11 14:56
2002.06.24
Помогите с DLL разобраться!


4-77688
Y_Vovan
2002-04-26 15:56
2002.06.24
Как програмно создать юзера с паролем в Win98,Nt,W2K,Xp