在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;