2013-01-08 42 views
6

मुझे सूची के हैश मैप की आवश्यकता है। आम तौर पर मैं यह कर:सूची के स्कैला हैश मैप: सरल डिफ़ॉल्ट?

val lists = mutable.HashMap[String,List[Int]]() { 
    override def default(key: String) = { 
    val newList = List[Int]() 
    this(key) = newList 
    newList 
    } 
} 

ताकि मैं तो बस

lists("dog") ::= 14 

जैसी चीजों के बारे में लिख सकते हैं "कुत्ता" सूची अभी तक initialised किया गया है या चिंता करने की ज़रूरत नहीं है।

क्या ऐसा करने का कोई क्लीनर तरीका है? मैं खुद को उन पांच डिफ़ॉल्ट ओवरराइड लाइनों को बार-बार टाइप कर रहा हूं।

धन्यवाद!

उत्तर

15

withDefaultValue() के बारे में क्या?

val lists = new mutable.HashMap[String,List[Int]].withDefaultValue(Nil) 

lists("dog") ::= 13 
lists("cat") ::= 14 
lists("dog") ::= 15 //(13, 15) 

भी

+3

बहुत बढ़िया मिलते हैं! बस टिकट। यही कारण है कि मैं stackoverflow प्यार करता हूँ। –