问题描述
因此,我正在研究使用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
)时,这种可能性更大。当然,这会占用更多的内存。
第二个选项将始终是线性搜索,而在哈希图中查找的时间是恒定的。
所有这些都可能是面对实际测试结果的猜测,这确实值得鼓励。