List 如何从另一个列表中查找列表中的元素

List 如何从另一个列表中查找列表中的元素,list,scala,List,Scala,我有两张这样的清单 val list1=List("abc","def","mnp","wpr") val list2=List("bc","de","pr") 我想获得一个新列表,该列表将检查list1的项目是否包含list2 例如列表1中的“abc”包含列表2中的“bc” 列表1中的“def”包含列表2中的“de” 列表1中的“wpr”包含列表2中的“pr” 输出应该是这样的列表 List("abc","def","wpr") 你可以用一个线性方程来解决它,如下所示: scala>

我有两张这样的清单

val list1=List("abc","def","mnp","wpr")

val list2=List("bc","de","pr")
我想获得一个新列表,该列表将检查
list1
的项目是否包含
list2

例如
列表1中的“abc”
包含
列表2中的“bc”

列表1中的“def”包含
列表2中的“de”

列表1中的“wpr”
包含
列表2中的
“pr”

输出应该是这样的列表

List("abc","def","wpr")

你可以用一个线性方程来解决它,如下所示:

scala> val list1 = List("abc", "def", "mnp", "wpr")
list1: List[String] = List(abc, def, mnp, wpr)

scala> val list2 = List("bc", "de", "pr")
list2: List[String] = List(bc, de, pr)

scala> list1.filter(x => list2.exists(y => x.contains(y)))
res0: List[String] = List(abc, def, wpr)

它适用于小的
list2
列表和小字符串,但在最坏的情况下,它具有复杂性
O(n1*n2*m1*m2)
,其中
n1
n2
列表的大小,
m1
m2
对应列表中字符串的大小。因此,对于长<代码> List2< P>。
scala> val list1 = List("abc", "def", "mnp", "wpr")
list1: List[String] = List(abc, def, mnp, wpr)

scala> val list2 = List("bc", "de", "pr")
list2: List[String] = List(bc, de, pr)

scala> list1.filter(x => list2.exists(y => x.contains(y)))
res0: List[String] = List(abc, def, wpr)

它适用于小的
list2
列表和小字符串,但在最坏的情况下,它具有复杂性
O(n1*n2*m1*m2)
,其中
n1
n2
列表的大小,
m1
m2
对应列表中字符串的大小。所以,对于长<代码> List2列表或/和长字符串,请考虑使用更有效的算法,如

这应该起作用。在我的情况下,List2非常小,即max可以达到10个元素,请您查看一下。这应该行得通。在我的情况下,列表2非常小,即最大值,最多可以达到10个元素。请看一下这个?