相关疑难解决方法(0)

尽管 Kotlin 的“Map”不是“Iterable”,但它如何以及为什么是可迭代的?

与 Java 中一样,任何对象都Iterable可以在增强的 for 循环中使用。我认为 Kotlin 也同样如此,直到我发现事实kotlin.collections.Map并非如此Iterable

来自标准库源代码:

public interface Map<K, out V> {
    // ....
Run Code Online (Sandbox Code Playgroud)

如果不是,那么这样的事情怎么可能?:

val map: Map<String, Int> = HashMap()
// ...
for ((s, i) in map) {
    println(s)
    println(i)
    // works perfectly
}
Run Code Online (Sandbox Code Playgroud)

最后,是否可以制作支持此语法的自定义类?如果是这样,怎么办?

loops iterable standard-library kotlin

4
推荐指数
1
解决办法
691
查看次数

为什么我们不能在Map(Java)上使用Iterator?

我明白要迭代一个Map,我需要使用该entrySet()方法,然后使用Iterator结果Set.我觉得这个问题可能很愚蠢,但是,如何Map正确实施以便Iterator直接使用它是不可能的?据我所知,Map它不是一个集合,Iterator而是用于集合.但从逻辑上讲,它也不Map是键值对的集合(虽然它没有实现Collection接口)?

java

2
推荐指数
2
解决办法
3339
查看次数

标签 统计

iterable ×1

java ×1

kotlin ×1

loops ×1

standard-library ×1