Groovy,.find或.each中哪个更快时间复杂度?

问题描述

因此,我正在研究使用groovy中的哪种方法可以更快地得出结果。

假设我们有: def storage = [{item:"apple",amount:3,color: "red"},{item:"mango",amount:5,color: "yellow"}]

正在这样做:

def someMap = [:]
storage.each {
   someMap[it.item] = [amount: it.amount,color: it.color]
}

因此,当我们需要获取一件物品的数量时,我们可以这样做: someMap["apple"].amount

比这更好吗? :

def storageFindByItem = { itemName ->
  return storage.find{
    i -> i.item == itemName
  }
} 

因此,当我们需要获取一件物品的数量时,我们可以这样做: storageFindByItem("apple").amount

解决方法

简短的答案是,在进行绩效评估时,您应该cpr并根据结果做出决定。

话虽如此,第一个选项将搜索索引地图,并且可能会更快。但是,当您将HashMap用于someMap而不是[:]LinkedHashMap)时,这种可能性更大。当然,这会占用更多的内存。
第二个选项将始终是线性搜索,而在哈希图中查找的时间是恒定的。

所有这些都可能是面对实际测试结果的猜测,这确实值得鼓励。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...