LinkedHashMap
मानचित्र में सम्मिलन आदेश को संरक्षित करने के लिए उपयोग किया जाता है, लेकिन यह केवल परिवर्तनीय मानचित्रों के लिए काम करता है। कौन सा अपरिवर्तनीय Map
कार्यान्वयन है जो सम्मिलन आदेश को संरक्षित करता है?अपरिवर्तनीय स्कैला मानचित्र कार्यान्वयन जो सम्मिलन आदेश
उत्तर
ListMap सूची-आधारित डेटा संरचना का उपयोग करके एक अपरिवर्तनीय मानचित्र लागू करता है, और इस प्रकार सम्मिलन आदेश को संरक्षित करता है।
scala> import collection.immutable.ListMap
import collection.immutable.ListMap
scala> ListMap(1 -> 2) + (3 -> 4)
res31: scala.collection.immutable.ListMap[Int,Int] = Map(1 -> 2, 3 -> 4)
scala> res31 + (6 -> 9)
res32: scala.collection.immutable.ListMap[Int,Int] = Map(1 -> 2, 3 -> 4, 6 -> 9)
निम्नलिखित विस्तार विधि - जब ListMap
रों के साथ काम करने Seq#toListMap
काफी उपयोगी हो सकता है।
scala> import scalaz._, Scalaz._, Liskov._
import scalaz._
import Scalaz._
import Liskov._
scala> :paste
// Entering paste mode (ctrl-D to finish)
implicit def seqW[A](xs: Seq[A]) = new SeqW(xs)
class SeqW[A](xs: Seq[A]) {
def toListMap[B, C](implicit ev: A <~< (B, C)): ListMap[B, C] = {
ListMap(co[Seq, A, (B, C)](ev)(xs) : _*)
}
}
// Exiting paste mode, now interpreting.
seqW: [A](xs: Seq[A])SeqW[A]
defined class SeqW
scala> Seq((2, 4), (11, 89)).toListMap
res33: scala.collection.immutable.ListMap[Int,Int] = Map(2 -> 4, 11 -> 89)
मौजूदा कुंजी * परिवर्तन * वस्तुओं के क्रम के साथ ListMap - कॉलिंग अपडेट() के साथ एक गॉचा है। उदाहरण: 'सूची मैप ("ए" → 1, "बी" → 2)। अद्यतित ("ए", 2)। सूची' उपज 'सूची ((बी, 2), (ए, 2)) '। मेरे उपयोग के मामले के लिए बहुत दुर्भाग्यपूर्ण :( –
ListMap
प्रविष्टि क्रम बनाए रखने के करते हैं, यह बहुत ही कुशल नहीं है - जैसे लुकअप समय रैखिक है। मेरा सुझाव है कि आप एक नया संग्रह वर्ग बनाएं जो immutable.HashMap
और immutable.TreeMap
दोनों को लपेटता है। अपरिवर्तनीय मानचित्र को immutable.HashMap[Key, (Value, Long)]
के रूप में parametrized किया जाना चाहिए, जहां tuple में Long
आपको TreeMap[Long, Key]
में इसी प्रविष्टि के सूचक को देता है। फिर आप पक्ष में एक प्रवेश काउंटर रखें। यह पेड़ नक्शा प्रविष्टि आदेश के अनुसार प्रविष्टियों को सॉर्ट करेगा।
आप सीधे तरीके से सम्मिलन और लुकअप को लागू करते हैं - काउंटर को बढ़ाते हैं, हैश मानचित्र में डालें और काउंटर-कुंजी जोड़ी को ट्रेमैप में डालें। आप लुकअप के लिए हैश मानचित्र का उपयोग करते हैं।
आप वृक्ष मानचित्र का उपयोग करके पुनरावृत्ति लागू करते हैं।
निकालने के लिए, आपको हैश मानचित्र से कुंजी-मूल्य जोड़ी को हटाना होगा और पेड़ मानचित्र से संबंधित प्रविष्टि को निकालने के लिए ट्यूपल से अनुक्रमणिका का उपयोग करना होगा।
+1। निकट भविष्य में stdlib में ऐसा संग्रह करने का कोई मौका? – missingfaktor
यह योजना नहीं बनाई गई है, लेकिन यदि स्कैला आंतरिक मेलिंग सूची पर चर्चा से पता चला कि बहुत से लोग इसे चाहते हैं , तो क्यों नहीं। – axel22
क्या आप विस्तारित करना चाहते हैं क्यों? – axel22
- 1. स्कैला समूह सम्मिलन आदेश संरक्षित है?
- 2. स्कैला अपरिवर्तनीय मानचित्र, कब परिवर्तनीय जाना है?
- 3. मुझे एक अपरिवर्तनीय कुंजी-मूल्य संरचना की आवश्यकता है जो सम्मिलन आदेश
- 4. जावा में आदेश सूची मानचित्र कार्यान्वयन
- 5. रूबी हैश सम्मिलन आदेश
- 6. स्कैला अपरिवर्तनीय कतार
- 7. पंक्ति सम्मिलन आदेश इकाई ढांचा
- 8. सम्मिलन-आदेश दिया गया सूचीसेट
- 9. ऐरेलिस्ट सम्मिलन और पुनर्प्राप्ति आदेश
- 10. स्कैला कस्टम मानचित्र
- 11. सूची कार्यान्वयन जो
- 12. अपरिवर्तनीय (डबल) लिंक्डलिस्ट का कुशल कार्यान्वयन
- 13. स्कैला मानचित्र -> ऑपरेटर
- 14. एक std :: नक्शा जो सम्मिलन के आदेश का ट्रैक रखता है?
- 15. स्कैला: उत्परिवर्तनीय बनाम अपरिवर्तनीय ऑब्जेक्ट प्रदर्शन - आउटऑफमेमरी एरर
- 16. एसटीएल मानचित्र सम्मिलन दक्षता: [] बनाम डालने
- 17. अप्रत्याशित स्कैला मानचित्र प्रकार
- 18. स्कैला मानचित्र विधि वाक्यविन्यास
- 19. विभिन्न स्कैला अभिनेता कार्यान्वयन अवलोकन
- 20. आप एक java.util.Collections.unmodifiableMap को एक अपरिवर्तनीय स्कैला मानचित्र में कैसे परिवर्तित करते हैं?
- 21. स्व आयोजन मानचित्र (SOM) कार्यान्वयन
- 22. Google संग्रह (गुवा पुस्तकालय): अपरिवर्तनीय सेट/सूची/मानचित्र और फ़िल्टरिंग
- 23. सम्मिलन
- 24. स्कैला मानचित्र कैसे पुनरारंभ करें?
- 25. स्कैला ऐरे मानचित्र रिटर्न ArraySeq
- 26. स्कैला में समवर्ती मानचित्र/foreach
- 27. ने नक्शा कार्यान्वयन का आदेश दिया
- 28. प्रविष्टि आदेश
- 29. क्या हैशटेबल सम्मिलन आदेश को बनाए रखता है?
- 30. स्कैला
यह एक सटीक डुप्लिकेट नहीं है, सवाल अपरिवर्तनीय मानचित्र के लिए है, कथित डुप्लिकेट उत्परिवर्तनीय और अपरिवर्तनीय दोनों के बारे में है। दूसरा सवाल * सीधे * अपरिवर्तनीय भाग का जवाब नहीं देता है (शायद अप्रत्यक्ष रूप से) –