क्या डेल्फी में हैशसेट है?क्या डेल्फी में हैशसेट है?
मुझे पता है कि सेट का उपयोग करना सबसे अधिक 255 आइटम हो सकता है। क्या नवीनतम डेल्फी कंपाइलर में हैशसेट है उदा। एक्सई 8, सिएटल
क्या डेल्फी में हैशसेट है?क्या डेल्फी में हैशसेट है?
मुझे पता है कि सेट का उपयोग करना सबसे अधिक 255 आइटम हो सकता है। क्या नवीनतम डेल्फी कंपाइलर में हैशसेट है उदा। एक्सई 8, सिएटल
मानक संग्रह एक सामान्य सेट क्लास प्रदान नहीं करते हैं। तृतीय पक्ष संग्रह पुस्तकालय जैसे 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;
मैं तो आप किसी भी गलतियों मैंने बनाया समाधान करना पड़ सकता इस कोड को संकलित नहीं किया है,। आप इसे अधिक सक्षम होने के लिए विस्तारित करना चाहते हैं। लेकिन उम्मीद है कि यह आपको दिखाएगा कि कैसे शुरू किया जाए।
आप इसके लिए TDictionary
का उपयोग कर सकते हैं। जिस चीज को आप ट्रैक करना चाहते हैं, उसके लिए TKey
टाइप पैरामीटर को परिभाषित करें। TValue
टाइप पैरामीटर कुछ भी हो सकता है; आप इसका इस्तेमाल नहीं करेंगे। (पर्ल भी एक सेट प्रकार का अभाव है, और इसलिए सम्मेलन में एक ही तरीके मैं यहाँ का सुझाव दे रहा हूँ में अपनी हैश प्रकार का उपयोग करने के लिए है।)
कॉल ContainsKey
सदस्यता की जाँच करने के। डालने के लिए Add
या AddOrSetValue
का उपयोग करें; हटाने के लिए Remove
।
यह एक रैपर लिखने के लिए एक छोटा अभ्यास होगा जो अप्रयुक्त TValue
पैरामीटर को छुपाता है।
AFAIK डेल्फी में हैशसेट कार्यान्वयन शामिल नहीं है लेकिन आप [स्प्रिंग 4 डी] (https://bitbucket.org/sglienke/spring4d) प्रोजेक्ट को आजमा सकते हैं जिसमें 'थैशसेट' – RRUZ