如何在 Kotlin 中迭代 hashmap?
How to iterate over hashmap in Kotlin?
如何在 Kotlin
中迭代 HashMap?
typealias HashMap<K, V> = HashMap<K, V> (source)
没那么难:
for ((key, value) in map) {
println("$key = $value")
}
或
(根据@RuckusT-Boom's and @KenZira's信息更新。)
map.forEach { (key, value) -> println("$key = $value") }
上面的回答,小心下面的Android
N
!
map.forEach { key, value -> println("$key = $value") }
对 Java 8
api 的引用导致:
Rejecting re-init on previously-failed class java.lang.Class<T>
map.forEach { (key, value) -> println("$key = $value") }
是Kotlin
特征
还有一个没有提到的方法是:
val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
使用'for loop'或'forEach'或'Iterator'
fun main(args : Array<String>) {
val items = HashMap<String, String>()
items["1"] = "USA"
items["2"] = "Japan"
items["3"] = "India"
//for loop example
println("\n-- Example 1.1 -- ");
for ((k, v) in items) {
println("$k = $v")
}
// forEach example
println("\n-- Example 1.2 --");
items.forEach { (k, v) ->
println("$k = $v")
}
//Iterator example
println("\n-- Example 1.3 --");
val itr = items.keys.iterator()
while (itr.hasNext()) {
val key = itr.next()
val value = items[key]
println("${key}=$value")
}
}
在 Kotlin 中使用 HashMap 检索消息。
fun main() {
// Adding messages to arrayList
val myMsg = arrayListOf(
Message(1, "A", "10-02-2022"),
Message(2, "B", "10-02-2022"),
Message(3, "C", "11-02-2022"),
Message(4, "D", "11-02-2022"),
Message(5, "E", "11-02-2022"),
Message(6, "F", "12-02-2022"),
Message(7, "G", "12-02-2022"),
Message(8, "H", "12-02-2022"),
Message(9, "I", "14-02-2022"),
Message(10, "J", "14-02-2022")
)
// Getting date wise messages
val dateWiseMessageList = myMsg.groupBy { it.date }.values
println("Total sections are ${dateWiseMessageList.size}")
val myMessageMap = HashMap<Int, List<Message>>()
// Storing date wise messages to HashMap with Key and Value as multiple messages
for ((index, value) in dateWiseMessageList.withIndex()) {
println("the element at $index is $value")
myMessageMap[index] = value
}
// Retrieve messages in date wise section
for ((key, value) in myMessageMap) {
println("Section $key data are")
for (i in value.indices) {
println(" Id = ${value[i].id} Message = ${value[i].msg} Date = ${value[i].date}")
}
}
}
消息数据class
data class Message(val id: Int, val msg: String, val date: String)
output
如何在 Kotlin
中迭代 HashMap?
typealias HashMap<K, V> = HashMap<K, V> (source)
没那么难:
for ((key, value) in map) {
println("$key = $value")
}
或
(根据@RuckusT-Boom's and @KenZira's信息更新。)
map.forEach { (key, value) -> println("$key = $value") }
上面的回答,小心下面的Android
N
!
map.forEach { key, value -> println("$key = $value") }
对 Java 8
api 的引用导致:
Rejecting re-init on previously-failed class java.lang.Class<T>
map.forEach { (key, value) -> println("$key = $value") }
是Kotlin
特征
还有一个没有提到的方法是:
val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
使用'for loop'或'forEach'或'Iterator'
fun main(args : Array<String>) {
val items = HashMap<String, String>()
items["1"] = "USA"
items["2"] = "Japan"
items["3"] = "India"
//for loop example
println("\n-- Example 1.1 -- ");
for ((k, v) in items) {
println("$k = $v")
}
// forEach example
println("\n-- Example 1.2 --");
items.forEach { (k, v) ->
println("$k = $v")
}
//Iterator example
println("\n-- Example 1.3 --");
val itr = items.keys.iterator()
while (itr.hasNext()) {
val key = itr.next()
val value = items[key]
println("${key}=$value")
}
}
在 Kotlin 中使用 HashMap 检索消息。
fun main() {
// Adding messages to arrayList
val myMsg = arrayListOf(
Message(1, "A", "10-02-2022"),
Message(2, "B", "10-02-2022"),
Message(3, "C", "11-02-2022"),
Message(4, "D", "11-02-2022"),
Message(5, "E", "11-02-2022"),
Message(6, "F", "12-02-2022"),
Message(7, "G", "12-02-2022"),
Message(8, "H", "12-02-2022"),
Message(9, "I", "14-02-2022"),
Message(10, "J", "14-02-2022")
)
// Getting date wise messages
val dateWiseMessageList = myMsg.groupBy { it.date }.values
println("Total sections are ${dateWiseMessageList.size}")
val myMessageMap = HashMap<Int, List<Message>>()
// Storing date wise messages to HashMap with Key and Value as multiple messages
for ((index, value) in dateWiseMessageList.withIndex()) {
println("the element at $index is $value")
myMessageMap[index] = value
}
// Retrieve messages in date wise section
for ((key, value) in myMessageMap) {
println("Section $key data are")
for (i in value.indices) {
println(" Id = ${value[i].id} Message = ${value[i].msg} Date = ${value[i].date}")
}
}
}
消息数据class
data class Message(val id: Int, val msg: String, val date: String)
output