जावा में हमारे पास दो अच्छी कक्षाएं हैं: enum
एस और EnumMap
के मानचित्र के लिए जिनकी चाबियाँ enum
एस हैं। EnumSet
को 64-बिट शब्द (या 64-बिट शब्दों की एक सरणी) और EnumMap
मानों की सरणी के रूप में दर्शाया गया है, दोनों enum
एस के क्रमिक संख्याओं द्वारा अनुक्रमित दोनों। तो सम्मिलित करें/लुकअप/निकालें/... ऑपरेशन केवल ओ (1) समय लेते हैं।क्या एनमसेट/एनमैप के बराबर एक स्कैला है?
क्या हमारे पास स्कैला - उत्परिवर्तनीय या अपरिवर्तनीय में ऐसा कुछ है?
मुझे BitSet (दोनों उत्परिवर्तनीय और अपरिवर्तनीय) मिले जो पूर्णांक पर चलते हैं, इसलिए मैंने माना कि Enumeration
के सेट का एक प्रभावी कार्यान्वयन होगा। Value
इसके द्वारा समर्थित है। लेकिन मुझे केवल Enumeration.ValueSet
मिला, जो backed up by SortedSet[Int] है। हालांकि यह इतना बुरा नहीं है, BitSet
इस उद्देश्य के लिए काफी अधिक कुशल लगता है।
मुझे के साथ नक्शे के किसी भी अनुकूलित कार्यान्वयन को EnumMap
के समान कुंजी के रूप में नहीं मिला।
विपरीत जावा 'enum's, स्काला के' Enumeration' मूल्यों मनमाना संख्यात्मक पहचानकर्ता हो सकता है और यही वजह है मुझे लगता है वहाँ जावा 'EnumSet' और' EnumMap' के लिए कोई सीधा बराबर है स्कैला में – ghik
@ghik हालांकि यह सच है मैं कहूंगा कि यह सुविधा शायद ही कभी उपयोग की जाती है। और जब किसी ने मूल्यों के लिए बड़ी संख्या असाइन की है तो यह एक अलग 'सेट'/'मानचित्र' कार्यान्वयन का उपयोग करने की उसकी ज़िम्मेदारी होगी। –
@ghik वास्तव में 2.10 impl में बग का स्रोत है। –