使用和条件合并scala中的两个列表

使用和条件合并scala中的两个列表,scala,list,Scala,List,有人能建议在scala中合并两个列表的最佳方法,以便生成的列表只包含两个列表中的匹配元素吗 例如: List[Int] = List(10,20,30) List[Int] = List(30,50) Result: List[Int] = List(30) 和条件(为循环嵌套) 可以将嵌套for循环用作 它应该为您提供列表(30)和条件(嵌套循环) 可以将嵌套for循环用作 除了intersect解决方案之外,您还可以使用过滤器和内部包含的 l1.filter(l2.contai

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

例如:

  List[Int] = List(10,20,30)
  List[Int] = List(30,50)
  Result: List[Int] = List(30)
和条件(为循环嵌套)

可以将嵌套for循环用作

它应该为您提供列表(30)和条件(嵌套循环)

可以将嵌套for循环用作


除了intersect解决方案之外,您还可以使用
过滤器
内部包含的

l1.filter(l2.contains(_))
根据您的输入:

l1: List[Int] = List(10, 20, 30)
l2: List[Int] = List(30, 50)
结果将是:

List[Int] = List(30)

除了intersect解决方案外,还可以使用
过滤器
,内部带有
contains

l1.filter(l2.contains(_))
根据您的输入:

l1: List[Int] = List(10, 20, 30)
l2: List[Int] = List(30, 50)
结果将是:

List[Int] = List(30)

使用
dropwhile
takeWhile
也可以实现类似的功能

scala> l2.takeWhile(l1.contains(_))
res8: List[Int] = List(30)

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

使用
dropwhile
takeWhile
也可以实现类似的功能

scala> l2.takeWhile(l1.contains(_))
res8: List[Int] = List(30)

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

谢谢你的快速回复。我正在寻找一个内置函数,intersect解决了我的用例。感谢您的快速响应。我在寻找一个内置函数,并解决了我的用例。