在Delphi中有HashSet吗?

前端之家收集整理的这篇文章主要介绍了在Delphi中有HashSet吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Delphi中有HashSet吗?

我知道使用set最多可以保存255项.在最新的Delphi编译器中有HashSet吗? XE8,西雅图

解决方法

标准集合不提供通用的集合类. Spring4D等第三方集合库.

您可以很容易地在TDictionary< K,V>之上构建一个泛型集类.裸骨版本可能如下所示:

type
  TSet<T> = class
  private
    FDict: TDictionary<T,Integer>;
  public
    constructor Create;
    destructor Destroy; override;
    function Contains(const Value: T): Boolean;
    procedure Include(const Value: T);
    procedure Exclude(const Value: T);
  end;

....

constructor TSet<T>.Create;
begin
  inherited;
  FDict := TDictionary<T,Integer>.Create;
end;

destructor TSet<T>.Destroy;
begin
  FDict.Free;
  inherited;
end;

function TSet<T>.Contains(const Value: T): Boolean;
begin
  Result := FDict.ContainsKey(Value);
end;

procedure TSet<T>.Include(const Value: T);
begin
  FDict.AddOrSetValue(Value,0);
end;

procedure TSet<T>.Exclude(const Value: T);
begin
  FDict.Remove(Value);
end;

我没有编译这段代码,所以你可能需要修正我所犯的错误.你可能希望扩展它更有能力.但希望这可以告诉你如何开始.

猜你在找的Delphi相关文章