У меня есть следующая рекурсивная функция для удаления элементов из списка (zooResidents: List[(String, Int)]), содержащихся в другом списке (pets: List[String]. >). Он работает, но очень медленно. Как это сделать в Scala?
val pets = List("cat", "dog")
val zooResidents = List(("cat", 4), ("lion", 2), ("tiger", 3), ("dog", 2)
def removePets(zooResidents: List[(String, Int)], pets: List[String]): List[(String, Int)] = {
if (pets.isEmpty) zooResidents
else removePets(zooResidents.filterNot(_._1.contains(pets.head)), pets.tail)
}
removePets(zooResidents, pets) //> res2: List[(String, Int)] = List((lion,2), (tiger,3))