Kotlin中有Multimap吗?

时间:2017-12-16 15:22:40

标签: kotlin

我需要在地图中存储值,这样:

 val map = HashMap<String, Set<String>>()

但很难与地图内的Set进行互动。

在Kotlin中是否有任何多地图实现,例如 Multimap in Google Guava

4 个答案:

答案 0 :(得分:12)

不,目前还没有。并且可能在将来不会成为一个。

参考:https://discuss.kotlinlang.org/t/the-standard-library-and-a-kotlin-manifesto/1303/6

替代:

org.springframework.util.MultiValueMap
org.apache.commons.collections4.MultiMap
com.google.common.collect.Multimap

要使用示例中的Set,您可以:

map["key"].forEach(::println)

或其他。

答案 1 :(得分:3)

  

但是很难在地图内与Set进行交互。

并不难,例如:

val map = HashMap<String, MutableSet<String>>()
map.getOrPut("howdy") { mutableSetOf() }.add("world")

答案 2 :(得分:1)

您还可以使用: val myMap = LinkedMultiValueMap<String, String>().apply {add("Hello", "World")}

答案 3 :(得分:0)

如果您在JVM和Spring上使用Kotlin:您可以将collectionUtils用于MultivalueMap:并且您还可以得到一个不可修改的类型:实际上,它仅将UnsupportedOperationException抛出修改。

val myMap = mapOf("1" to listOf(1,2,3))
CollectionUtils.unmodifiableMultiValueMap(CollectionUtils.toMultiValueMap(myMap))