有人可以建议在scala中合并两个列表的最佳方法,以便结果列表只包含两个列表中的匹配元素吗?
示例:
List[Int] = List(10,20,30)
List[Int] = List(30,50)
Result: List[Int] = List(30)
答案 0 :(得分:2)
和条件(嵌套for循环)
您可以使用嵌套for循环作为
val list1 = List(10, 20, 30)
val list2 = List(30, 50)
val result = for(value1 <- list1; value2 <- list2; if value1 == value2) yield value1
println(result)
会打印List(30)
相交()(内置函数)
您可以使用intersect
功能,它会在两个列表中为您提供公共值
println(list1.intersect(list2))
应该给你List(30)
答案 1 :(得分:0)
除了交叉解决方案,您还可以使用内置filter
的{{1}}
contains
输入您的信息:
l1.filter(l2.contains(_))
结果将是:
l1: List[Int] = List(10, 20, 30)
l2: List[Int] = List(30, 50)
答案 2 :(得分:0)
使用dropwhile
或takeWhile
scala> l2.takeWhile(l1.contains(_))
res8: List[Int] = List(30)
scala> l1.dropWhile(!l2.contains(_))
res10: List[Int] = List(30)