scala list读取给定字符串的值

时间:2014-12-09 14:21:56

标签: scala scala-collections

第一个清单

val l1 = List(("A",12,13),("B",122,123),("C",1212,123))

寻找字符串

val l2 = "A"

如果字符串"A"出现在列表中,则在上述情况下显示匹配数据,如果字符串"A"匹配则输出将是 12

其他字符串不匹配,则仅显示0

4 个答案:

答案 0 :(得分:4)

找到第一场比赛;检索连音符的第二部分或0

 l1.find(_._1 == "A").map(_._2).getOrElse(0)

答案 1 :(得分:2)

scala模式匹配中存在一些讨厌的规则,如果某个变量以大写字母开头,它与其值匹配,那么您可以将val l2 = "A"重命名为val L2 = "A"以下内容会工作 -

scala> l1.collectFirst{ case (L2, i, _) => i }.getOrElse(0)
res0: Int = 12

答案 2 :(得分:0)

l1.find(_._1 == l2).map(_._2).getOrElse(0)

或更详细的版本

l1.find(a => a._1 == l2).map(a => a._2).getOrElse(0)

答案 3 :(得分:0)

使用for comprehension解决方案可以重新配置为匹配元组中的返回第二个元素,否则如果没有找到匹配则返回空列表,即

for ( (s,i,j) <- l1 if s == l2) yield i

提供

List(12)