Kotlin地图&amp;将字符串数组减少为Map <string,any!=“”>

时间:2016-08-30 13:33:15

标签: java kotlin

我想创建可从Java访问的Kotlin实用程序,它将字符串列表转换为Map。到目前为止,我写过:

class Utils {
    companion object {
        @JvmStatic fun values(item: GSAItem): Map<String, Object> {
            return item.itemDescriptor.propertyNames.map {it -> Map.Entry<String, Any!>(it, item.getPropertyValue(it)) };            }
    }
}

但我收到错误

Error:(16, 74) Kotlin: Unresolved reference: Entry

GSAItem.getPropertyValue是Java方法,它将String作为参数并返回Object。之后我怀疑我需要从Java 8中找到一些等效的collect函数?

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

item.itemDescriptor
    .propertyNames
    .map { name -> name to item.getPropertyValue(name) }
    .toMap()

答案 1 :(得分:1)

Map.Entry - stdlib - Kotlin Programming Languageinterface,因此它没有构造函数,这就是您收到错误的原因(可能不是最好的消息)。您可以找到实现,制作自己的实现,或使用associate代替:

class Utils {
    companion object {
        @JvmStatic fun values(item: GSAItem): Map<String, Any?> {
            return item.itemDescriptor.propertyNames.associate { it to item.getPropertyValue(it) }
        }
    }
}

请注意,您应使用AnyAny?代替java.lang.Object