स्कैला के उत्परिवर्तनीय और अपरिवर्तनीय HashSet
कार्यान्वयन ठोस वर्ग हैं जिन्हें आप तुरंत कर सकते हैं। उदाहरण के लिए, यदि आप स्पष्ट रूप से एक नया scala.collection.immutable.HashSet
मांगते हैं, तो आपको हमेशा एक सेट मिल जाएगा जो हैश ट्राई द्वारा लागू किया गया है। अन्य सेट कार्यान्वयन हैं, जैसे कि ListSet
, जो एक सूची का उपयोग करता है।
Set
trait है जो सभी सेट कार्यान्वयन विस्तार (जबकि जावा में, Set
एक इंटरफ़ेस है)।
Set
apply
** विधि के साथ एक साथी ऑब्जेक्ट * भी है। जब आप Set(...)
पर कॉल करते हैं, तो आप इस फैक्ट्री विधि को कॉल कर रहे हैं और वापसी मूल्य प्राप्त कर रहे हैं जो किसी प्रकार का Set
है। यह HashSet
हो सकता है, लेकिन कुछ अन्य कार्यान्वयन हो सकता है। 2 के अनुसार, एक अपरिवर्तनीय सेट के लिए डिफ़ॉल्ट कार्यान्वयन खाली सेट के लिए विशेष प्रतिनिधित्व है और सेट 4. अपरिवर्तनीय सेट आकार 5 और ऊपर और परिवर्तनशील सेट सब HashSet उपयोग करने के लिए के आकार।
* स्काला में, बजाय स्थिर वर्ग तरीकों होने के लिए, आप एक सिंगलटन object
अपनी कक्षा या विशेषता के रूप में एक ही नाम के साथ बना सकते हैं। इसे एक साथी ऑब्जेक्ट कहा जाता है, और जिस पर आप इसे परिभाषित करते हैं उसे ObjectName.method()
कहा जा सकता है, जैसा कि आप जावा में एक स्थिर विधि को कॉल करेंगे।
** Set(x)
Set.apply(x)
के लिए वाक्य रचनात्मक चीनी है।
स्रोत
2011-08-10 22:59:45
यह भी देखें [इस प्रश्न का एक और संस्करण] (http://stackoverflow.com/questions/18759913/what-is-the-difference-between-hashset-and-set-and-when-should-each-one), और साथ ही के लिए एक समान प्रश्न [ 'Map' बनाम' HashMap'] (http://stackoverflow.com/questions/31685236/scala-map-vs-hashmap) – EthanP