gpt4 book ai didi

delphi - 快速查找字符串列表中的重复项

转载 作者:行者123 更新时间:2023-12-03 15:37:13 25 4
gpt4 key购买 nike

在 Tstringlist 中查找重复项的最快方法是什么。我获得了在字符串列表中搜索重复项所需的数据。我目前的想法是这样的:

    var  TestStringList, DataStringList  : TstringList;


for i := 0 to DataStringList.Items-1 do
begin
if TestStringList.Indexof(DataStringList[i])< 0 < 0 then
begin
TestStringList.Add(DataStringList[i])
end
else
begin
memo1.ines.add('duplicate item found');
end;

end;
....

最佳答案

只是为了完整性,(并且因为您的代码实际上并未使用重复项,而只是表明已找到一个重复项):Delphi 的 TStringList 具有处理重复条目的内置功能,在它的 Duplicates 属性中。将其设置为 dupIgnore 将简单地丢弃您尝试添加的任何重复项。请注意,目标列表必须进行排序,否则Duplicates 无效。

TestStringList.Sorted := True;
TestStringList.Duplicates := dupIgnore;

for i := 0 to DataStringList.Items-1 do
TestStringList.Add(DataStringList[i]);
Memo1.Lines.Add(Format('%d duplicates discarded',
[DataStringList.Count - TestStringList.Count]));

快速测试表明,如果使用SortedDuplicates,则可以删除整个循环:

TestStringList.Sorted := True;
TestStringList.Duplicates := dupIgnore;

TestStringList.AddStrings(DataStringList);
Memo1.Lines.Add(Format('%d duplicates discarded',
[DataStringList.Count - TestStringList.Count]));

请参阅TStringList.Duplicates文档以获取更多信息。

关于delphi - 快速查找字符串列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com