To be honest, I don't like this. You're trading a map lookup and the small amount of memory from storing that for iterating on every find.
If this method was hardly ever called, this might be a reasonable trade-off (I say might, but probably not). But, this method is call a LOT, so the increase in call time scales. I vote no for this part.