Scala Как найти ключ карты, содержащий какое-то слово

#scala

Вопрос:

нужна ваша помощь, я просто новичок, который пришел в программирование на Scala.

у меня есть карта, похожая на образец ниже

 Map(Y1A0001_001 -> CU, Y1D0003 -> A011, Y1C0002 -> 20211030, Y1D0000 -> four, Y1D0002 -> Today only, Y1C0001 -> 123123, Y1B0003 -> 005, Y1D0001 -> CitizenID, Y1C0000 -> Customer)
Map(Y1A0001_001 -> CU, Y1D0003 -> A011, Y1C0002 -> 20210928, Y1D0000 -> five, Y1D0002 -> Today only, Y1C0001 -> 133213, Y1B0003 -> 006, Y1D0001 -> Drive License, Y1C0000 -> Director)
Map(Y1A0001_001 -> CU, Y1D0003 -> A011, Y1C0002 -> 20210927, Y1D0000 -> six, Y1D0002 -> Both, Y1C0001 -> 452234324, Y1B0003 -> 007, Y1D0001 -> CitizenID, Y1C0000 -> Messenger)
 

Как я могу найти ключ, содержащий суффикс 001, и получить значение тоже в программировании Scala?

например, ключ-Y1A0001_001, а значение — «CU».

пожалуйста, простите меня, если мой вопрос недостаточно ясен

Спасибо вам за вашу помощь

Комментарии:

1.Вы хотите использовать collectFirst метод — Хотя, обратите внимание, что вы будете повторять все Map до тех пор , пока не найдете нужный вам ключ, это нормально, но это не тот вариант использования, для которого вы предназначены Maps , вы можете просто использовать List (или любую другую Seq ) пару.

Ответ №1:

 val map: Map[String, String] = ???

val result: Option[(String, String)] = map.find { case (k,v) => 
  k.endsWith("001")
}
 

См. Scaladoc: Boolean):Option[A]» rel=»nofollow noreferrer»>https://www.scala-lang.org/api/current/scala/collection/Map.html#find(p:A=>Boolean):Опция[A]