检测数组中唯一值的数量

Gre*_*ner 3 delphi data-structures

我正在寻找一种有效的方法来检测数组中唯一值的数量.

我目前的做法:

  1. Quicksort整数数组
  2. 然后运行循环来比较元素.

在代码中:

  yearHolder := '';
  for I := 0 to  High(yearArray) do
  begin
    currYear := yearArray[i];
    if (yearHolder <> currYear) then
    begin
      yearHolder := currYear;
      Inc(uniqueYearNumber);
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

Jef*_*tis 6

以下是THashedStringList的示例:

hl := THashedStringList.Create; // in Inifiles
try
  hl.Sorted := True;
  hl.Duplicates := dupIgnore; // ignores attempts to add duplicates
  for i := 0 to  High(yearArray) do
    hl.Add(yearArray[i]);
  uniqueYearCount := hl.Count;
finally
  hl.Free;
end;
Run Code Online (Sandbox Code Playgroud)