假设我有countries
类型的列表List[String]
和类型capitals
的地图Map[String, String]
。现在我想写一个函数
pairs(countries:List[String], capitals:Map[String, String]):Seq[(String, String)]来返回一对
(country, capital)
的序列,并在找不到某个国家的资本时打印错误。最好的方法是什么?
答案 0 :(得分:10)
首先,您的Map[String,String]
已经已经 Seq[(String,String)]
,如果您愿意,可以通过调用toSeq
来形式化这一点:
val xs = Map("UK" -> "London", "France" -> "Paris")
xs.toSeq
// yields a Seq[(String, String)]
因此问题归结为找到不在地图中的国家。您可以通过两种方式获取 所代表的国家/地区的集合。
keys
方法将返回Iterator[String]
,而keySet
将返回Set[String]
。让我们赞成后者:
val countriesWithCapitals = xs.keySet
val allCountries = List("France", "UK", "Italy")
val countriesWithoutCapitals = allCountries.toSet -- countriesWithCapitals
//yields Set("Italy")
以您认为合适的方式将其转换为错误。
答案 1 :(得分:9)
countries.map(x=>(x, capitals(x)))