2012-04-08 14 views
7

मैं वर्तमान में स्कैला 2.9.1 का उपयोग कर रहा हूं।स्कैला म्यूटेबल की डिफ़ॉल्ट क्षमता/लोड कारक बदलें। हैश मैप

> val m = mutable.HashMap.empty[Int, Int] 

मैं तरह स्केला के लिए नए की हूँ: मैं एक mutable.HashMap का उपयोग कर बना सकते हैं। जावा में, मैं हैश मैप के निर्माता में क्षमता और लोड कारक निर्दिष्ट करने में सक्षम था। मैं स्कैला में ऐसा करने का कोई तरीका नहीं ढूंढ पा रहा हूं।

अग्रिम

उत्तर

4

धन्यवाद एपीआई के अनुसार, यह संभव हो प्रतीत नहीं होता है। एक स्पष्टीकरण यह है कि उत्परिवर्तनीय संग्रह दृढ़ता से निराश होते हैं, और अपरिवर्तनीय संग्रहों को डिफ़ॉल्ट क्षमता की जानकारी की आवश्यकता नहीं होती है क्योंकि निर्माण के समय वस्तुओं की संख्या ज्ञात होनी चाहिए।

हालांकि, ध्यान दें कि यदि आप कई संग्रह संग्रह विधियों के माध्यम से संग्रह (म्यूटेबल और अपरिवर्तनीय HashMap सहित) का निर्माण करते हैं तो स्काला डिफ़ॉल्ट रूप से डिफ़ॉल्ट क्षमता जानकारी का उपयोग करेगा। उदाहरण के लिए, यदि आप map पर HashMap पर कॉल करते हैं, तो (नीचे पुन: उत्पादित) पर परिभाषित map का उपयोग करेगा, और आप देख सकते हैं कि यह निर्माता को "आकार संकेत" प्रदान करता है जो उस क्षमता की जानकारी प्रदान करता है।

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = { 
    val b = bf(repr) 
    b.sizeHint(this) 
    for (x <- this) b += f(x) 
    b.result 
} 
+1

धन्यवाद .. लेकिन मेरी आवश्यकता HashMap की तरह एक जावा जहाँ मैं loadfactor आदि निर्माण पर (मैं बाद में मेरे एल्गोरिथ्म एक और अधिक कार्यात्मक शैली को संशोधित किया है निर्दिष्ट कर सकते हैं के लिए actaully था .. लेकिन मैं एक में रुचि थी प्रत्यक्ष बराबर गैर कम :) .. वैसे भी जवाब स्वीकार कर रहा है –

संबंधित मुद्दे