Asl*_*986 8 scala list scala-collections
你能为我提供一种表演(可能是惯用的)方式来检查一个列表A是否是给定列表的子列表B?
例如
isSubList(List(1,2), List(1,2,3,4)) // => true
isSubList(List(1,2), List(5,6,7,8)) // => false
Run Code Online (Sandbox Code Playgroud)
End*_*Neu 17
一种方法是使用forall和contains:
scala> List(1, 2).forall(List(1, 2, 3, 4).contains)
res3: Boolean = true
scala> List(1, 2).forall(List(5, 6, 7, 8).contains)
res4: Boolean = false
scala> List(1, 2).forall(List(5, 6, 2, 9).contains)
res5: Boolean = false
Run Code Online (Sandbox Code Playgroud)
请注意,此方法不考虑排序:
scala> List(1, 2).forall(List(2, 1).contains)
res6: Boolean = true
Run Code Online (Sandbox Code Playgroud)
也许你可以使用Sets和intersect,但我认为这种方式更可取.
gro*_*ter 17
如果订单很重要,您可以使用containsSlice,它检查集合是否包含给定序列作为切片
def isSubList[A](l1:List[A], l2:List[A]) = l2.containsSlice(l1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7484 次 |
| 最近记录: |