2015-07-28 18 views
8

Có sự khác biệt giữa Scala MapHashMap không? Tôi đang sử dụng scala.collection.immutable.HashMap.Bản đồ Scala vs HashMap

+0

[ 'HashMap'] (http: // www.scala-lang.org/api/2.11.5/index.html#scala.collection.immutable.HashMap) là triển khai ['Map'] (http://www.scala-lang.org/api/ 2.11.5/index.html # scala.collection.immutable.Map). Như bạn có thể thấy trong định nghĩa của chúng 'HashMap' là một lớp và' Bản đồ' là một đặc điểm. –

+1

Trong [_Programming in Scala, 1ed_] (http://www.artima.com/pins1ed/collections.html#17.3) (tìm kiếm "_Default immutable map implementationations_") chúng viết rằng 'HashMap' là cài đặt mặc định cho một 'Bản đồ' với 5 phần tử trở lên. –

Trả lời

13

scala.collection.immutable.Map là giao diện cho bản đồ bất biến trong khi scala.collection.immutable.HashMap là một triển khai cụ thể.

Tạo với Map() hoặc Map.empty đưa ra một bản đồ singleton trống đặc biệt, với Map(a -> b) lên đến cặp vị trí mang lại các lớp học chuyên ngành cho các bản đồ nhỏ như vậy và 5 và lên cung cấp cho bạn scala.collection.immutable.HashMap

+0

Tác giả không chỉ định scala.collection.immutable.Map hoặc scala.collection.Map trong bài đăng. Có scala.collection.Map() cũng cung cấp cho bạn cùng một kết quả triển khai Map như scala.collection.immutable.Map() không? –

+1

'scala.collection.Map. {Empty, apply}' chỉ đại biểu cho các phương thức nhà máy tương ứng trong đồng hành 'Map' bất biến. Lưu ý rằng mặc dù nếu bạn đang sử dụng rõ ràng 'scala.collection.Map' trong một chữ ký phương thức, ví dụ, sẽ chấp nhận các bản đồ có thể thay đổi cũng như không thay đổi được. Bản đồ 'Map' được nhập tự động (bởi Predef) là' immutable.Map'. – johanandren

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