Groovy - 如何在不更新地图的情况下使用默认值获取地图值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy - 如何在不更新地图的情况下使用默认值获取地图值相关的知识,希望对你有一定的参考价值。

如何从地图读取给定键的值,并提供默认值(如果地图不包含指定键的条目,则使用),但不更新地图 - 这是get方法的作用:

get(Object key, Object defaultValue)

在Map中查找给定键的项并返回值 - 除非给定键没有条目,在这种情况下将默认值添加到地图并返回该值。

  1. 它必须是一个短的表达式
  2. 出于性能原因,在该地图上创建深度复制(因此可以更新)并使用提到的get不是解决方案。

不同语言的等价物:

  • javascriptmap["someKey"] || "defaultValue"
  • 比例:map.getOrElse("someKey", "defaultValue")
  • Python3:map.get("someKey", "defaultValue")
答案

鉴于您为其他语言提供的示例以及您表达的不更新Map的要求,也许您正在寻找类似的东西...

map.someKey ?: 'default value'

请注意,如果someKey确实存在但是与该键关联的Map中的值为null,或者为零,false,或者每个Groovy真值规则计算为false的任何值,则将返回默认值,这可能会或可能会返回不是你想要的。

更详细的方法可能是这样的......

map.containsKey('someKey') ? map.someKey : 'default value'
另一答案

使用Java的getOrDefault Map方法(自Java 8起):

map.getOrDefault("someKey", "defaultValue")

它不会向地图添加新密钥。

以上是关于Groovy - 如何在不更新地图的情况下使用默认值获取地图值的主要内容,如果未能解决你的问题,请参考以下文章

android-如何在不打开地图/导航应用程序的情况下更新位置

如何在不刷新整个地图的情况下更新谷歌地图上的标记位置?

如何在不重新加载页面的情况下更新从 firestore 检索到的标记在我的地图上?

如何在不清除 GoogleMap 的情况下更新多个位置

如何在不使用 setCoordinate 的情况下更新注释?

在不加载整个地图的情况下更新谷歌地图中的标记