Làm cách nào để lặp lại hashmap trong Kotlin?


Câu trả lời:


206

Nó không khó lắm:

for ((key, value) in map) {
    println("$key = $value")
}

HOẶC
( Cập nhật theo thông tin của @ RuckusT-Boom@ KenZira .)

 map.forEach { (key, value) -> println("$key = $value") }

38
Nó đáng chú ý là phiên bản thứ hai có thể gây ra các vấn đề trên Android, vì vậy bạn có thể muốn sử dụngmap.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-Boom nó gây ra sự cố theo cách nào?
Anigif

7
Android không (hoặc không vào thời điểm nhận xét đó) có hỗ trợ đầy đủ cho Java 8 và ví dụ thứ hai là lệnh gọi Java 8. Lệnh gọi tương đương bằng cách sử dụng hàm hủy Kotlin trông rất giống nhau, nhưng bạn cần có dấu ngoặc nhọn xung quanh các đối số { (key, value) -> ... }. Ken Zira có thêm thông tin trong câu trả lời của mình.
Ruckus T-Boom

1
Chúng tôi đã tìm ra cách khó mà cách của @ RuckusT-Boom tốt hơn trên Android :) (Do có ClassNotFoundException, chúng tôi rất khó tìm ra)
Micha

1
Câu trả lời @ RuckusT-Boom được điều đúng, chúng tôi đã có vấn đề này trong thời gian thử nghiệm phát hành vào Cấp API khác nhau, và nó đã không phải là rất rõ ràng lý do tại sao nó được đâm, thông báo lỗi cũng gây hiểu lầm
Alaa Eddine Cherbib

64

Đối với câu trả lời trên, hãy cẩn thận với Androidbên dưới N!

map.forEach { key, value -> println("$key = $value") }

tham chiếu đến Java 8api dẫn đến:

Rejecting re-init on previously-failed class java.lang.Class<T>

map.forEach { (key, value) -> println("$key = $value") }

Kotlintính năng


Vâng, tôi cũng đã lãng phí nửa ngày cho việc này. for ((key, val) ...) đã giải quyết được vấn đề.
andude

2

Một cách khác chưa được đề cập là:

val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.