2015-07-16 21 views
7

Tôi đang thử Kotlin và tôi đã gặp phải một vấn đề nhỏ mà tôi không thể giải quyết. Khi tôi có việc xây dựng sau tôi có thể đưa các yếu tố vào bản đồ:Đưa phần tử vào HashMap với giao diện Bản đồ

val map = HashMap<String, String>() 
map["asd"] = "s" 
map.put("34", "354") 

Tuy nhiên khi tôi tạo ra một bản đồ với giao diện Map Tôi chỉ có thể đọc chúng, những gì tôi đang làm sai?

val map: Map<String, String> = HashMap<String, String>(); 
map.put("24", "34") //error 
map["23"] = "23" //error 

Hoặc có thể tôi đang nhầm lẫn điều gì đó về giao diện trong Kotlin?

Trả lời

10

Trong bản đồ ví dụ đầu tiên nhận được loại HashMap, trong ví dụ thứ hai bạn đưa nó vào Bản đồ giao diện.

Bản đồ là một bản đồ chỉ đọc, không có đặt/bộ, xem here

Để có thể chỉnh sửa bản đồ, bạn nên sử dụng MutableMap

+0

Đến từ Java, điều quan trọng là phải nhớ Map đó không đến từ java.util.Map nhưng từ Map được định nghĩa trong Collections.kt. Là một người mới của Kotlin, tôi cũng bị phát hiện bởi điều này. Như đã đề cập ở trên Bản đồ là chỉ đọc; để thay đổi bản đồ, hãy sử dụng MutableMap. Ngoài ra còn có các phương pháp trợ giúp để tạo các bản đồ khác nhau trong Maps.kt, ví dụ: hashMapOf, v.v. –

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