У меня есть простой неизменный Map
в Scala:
// ... - mean and so on
val myLibrary = Map("qwe" -> 1.2, "qasd" -> -0.59, ...)
И для этого myMap
я вызываю MyFind
метод, который вызывает getOrElse(val, 0)
:
def MyFind (srcMap: Map[String,Int], str: String): Int ={
srcMap.getOrElse(str,0)
}
val res = MyFind(myLibrary, "qwe")
* 1010 Проблема в том, что этот метод вызывается несколько раз для разных строк ввода. Например, я предполагаю, что для длины карты 100 и 1 входной строки будет попытаться сравнить эту строку 100 раз (для 1 значения карты). Как вы предполагаете, для 10 000 будет получено 10 000 сравнений.
Таким образом, при огромной длине карты более 10.000 мой метод, который находит значение строковых ключей на этой карте, значительно замедляет работу.
Что вы можете посоветовать для ускорения этого кода?
Может быть, использовать другой тип карты?
Может быть, еще одна коллекция?