【发布时间】:2019-04-21 19:50:24
【问题描述】:
我在 scala 中有一组 Map.Entry,例如 Set<Map.Entry<String, ConfigValue>>。现在我想在 scala 中设置键(字符串)或值(配置值)。请为这个问题提出一些简单的解决方案。
谢谢
【问题讨论】:
标签: scala collections set
我在 scala 中有一组 Map.Entry,例如 Set<Map.Entry<String, ConfigValue>>。现在我想在 scala 中设置键(字符串)或值(配置值)。请为这个问题提出一些简单的解决方案。
谢谢
【问题讨论】:
标签: scala collections set
您可以创建几个函数来描述该计算,例如:
val getKeys: Set[JavaMap.Entry[String, ConfigValue]] => Set[String] = _.map(_.getKey)
val getValues: Set[JavaMap.Entry[String, ConfigValue]] => Set[ConfigValue] = _.map(_.getValue)
然后,当您需要提取其中一个或另一个时,您可以这样调用它们:
val setOfKeyMap: Set[Map.Entry[String, ConfigValue]] = ???
...
val setOfKeys: Set[String] = getKeys(setOfKeyMap)
val setOfValues: Set[ConfigValue] = getValues(setOfKeyMap)
【讨论】:
如果你有
val map: Set[Map[K, V]] = ???
val keys = map.flatMap(_.keySet) will give you Set[K]
val values = map.flatMap(_.values) will give you Set[V]
在这两种情况下,重复项都将被删除。
【讨论】:
Map.Entry[K,V] 是一个单一的条目,所以它有点像 scalas tuple (K,V)
您可以使用.map 将您的Set[Map.Entry[String,ConfigValue]] 转换为Set[String] 和/或Set[ConfigValue]。但请注意,您可能需要先转换为 List 以避免折叠重复项。
【讨论】: