2012-04-08 25 views
7

Tôi hiện đang sử dụng scala 2.9.1. Tôi tạo một mutable.HashMap bằng cách sử dụng:Thay đổi dung lượng mặc định/hệ số tải của scala mutable.HashMap

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

Tôi là loại mới để scala. Trong java, tôi đã có thể xác định công suất và hệ số tải trong hàm tạo của HashMap. Tôi không thể tìm thấy bất kỳ cách nào để làm tương tự trong scala.

Cảm ơn trước Advance

Trả lời

4

Theo API, điều này dường như không thể thực hiện được. Một giải thích là các bộ sưu tập có thể thay đổi được khuyến khích mạnh mẽ và các bộ sưu tập không thay đổi không cần thông tin dung lượng mặc định vì số lượng các mục phải được biết tại thời điểm xây dựng. Tuy nhiên, lưu ý rằng Scala sẽ ngầm sử dụng thông tin dung lượng mặc định nếu bạn xây dựng một bộ sưu tập (bao gồm cả có thể thay đổi và bất biến HashMap) thông qua nhiều phương pháp thu thập có sẵn. Ví dụ: nếu bạn gọi map trên HashMap, nó sẽ sử dụng map được xác định trên TraversableLike (được sao chép bên dưới) và bạn có thể thấy rằng nó cung cấp "gợi ý kích thước" cho người xây dựng cung cấp thông tin về dung lượng đó.

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

Cảm ơn bạn .. nhưng yêu cầu của tôi là actaully cho một java như HashMap nơi tôi có thể xác định loadfactor vv lúc sáng tạo (Tôi đã sau đó sửa đổi thuật toán của tôi đến một phong cách chức năng hơn .. nhưng tôi đã quan tâm đến một tương đương trực tiếp không ít :). Vẫn chấp nhận câu trả lời –

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