delphi 删除TStrings项而不进行排序的最快方法

wdebmtf2  于 2023-04-29  发布在  其他
关注(0)|答案(1)|浏览(129)

我计划开发一个不使用TStrings类排序属性的软件,并删除重复的项目。什么是最好的方式做这个性能明智的?感谢您一如既往的专业知识或遵循的方向。希望我清楚的问题,基本上是一个文本列表,重复的行被删除,但仍然没有排序。该文件属于IRC信息,它的大小可能有点大。我记得我最后一次检查的日志是1。2兆左右。
你的智慧之言

dm7nw8vv

dm7nw8vv1#

最好避免重复,所以保持字典(这里它被用作集合)与列表中已经存在的字符串。
示例:

uses System.Generics.Collections;

var
  MyDict: TDictionary<String, Integer>;
  s: string;
  sl: TStringList;
  strs: array of string;
begin
  strs := ['aa', 'bb', 'aa', 'dd'];
  sl := TStringList.Create;
  try
    MyDict := TDictionary<String, Integer>.Create;
    try
      for s in strs do
         if Mydict.TryAdd(s, 1) then
            sl.Add(s);
      Memo1.Lines.Assign(sl);
    finally
      MyDict.Free;
    end;
  finally
    sl.Free;
  end;

相关问题