检查Golang中的地图中是否存在值

时间:2017-11-09 22:19:16

标签: performance dictionary go

我正在寻找一种有效的方法来检查Golang中是否存在值。我知道的方法是使用for循环/范围。还有更好的方法吗?

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:3)

没有内置方法可以确定地图是否包含特定值。如果您需要此行为有效,请考虑使用其他数据结构来支持它。

请注意,虽然Java的Map提供了containsValue,但documentation说:

  

对于Map接口的大多数实现,此操作可能需要地图大小的线性时间。

因此,如果您需要Java Map的有效实现,您还需要提供一个。

什么"有效的实施"表示根据您要映射的数据类型进行更改。例如,如果值始终是唯一的,那么保持map[value]key就足够了。如果他们不是,那么需要更有原则性的东西。

答案 1 :(得分:0)

如果您有相当大的地图并想要优化价值检查,那么几乎要再添加一张地图。像map[valueType]int。然后:

for k, v := range m {
    values[v]++
}