使用AND条件在scala中合并两个列表

时间:2018-03-21 06:26:43

标签: scala list

有人可以建议在scala中合并两个列表的最佳方法,以便结果列表只包含两个列表中的匹配元素吗?

示例:

  List[Int] = List(10,20,30)
  List[Int] = List(30,50)
  Result: List[Int] = List(30)

3 个答案:

答案 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)

使用dropwhiletakeWhile

也可以实现类似的功能
scala> l2.takeWhile(l1.contains(_))
res8: List[Int] = List(30)

scala> l1.dropWhile(!l2.contains(_))
res10: List[Int] = List(30)