2013-01-08 32 views
6

Tôi cần một HashMap of Lists. Bình thường, tôi làm điều này:Scala HashMap of Lists: mặc định đơn giản hơn?

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

để tôi có thể sau đó chỉ cần viết những thứ như

lists("dog") ::= 14 

mà không cần phải lo lắng về việc liệu các "con chó" Danh sách đã được khởi tạo được nêu ra.

Có cách nào tốt hơn để thực hiện việc này không? Tôi thấy mình gõ vào năm dòng ghi đè mặc định này một lần nữa và một lần nữa.

Cảm ơn!

Trả lời

15

Còn khoảng withDefaultValue() thì sao?

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

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

cũng Xem

+3

Tuyệt vời! Chỉ vé thôi. Đây là lý do tại sao tôi yêu stackoverflow. –

Các vấn đề liên quan