Scala 比较ListBuffer中的元素
我有两个列表缓冲区:Scala 比较ListBuffer中的元素,scala,listbuffer,Scala,Listbuffer,我有两个列表缓冲区: lstbufhichchange是lstbufStatic的子集。我想做的是,找到一种方法来比较这两个集合,如果lstbufWhichChange的元素顺序与lstbufStatic相同,即使它不包含所有元素,它也是一个子集。如何操作?使用内置函数的一种方法是: 首先获取列表中的公共元素 val commonEle = lstbufWhichChange.intersect(lstbufStatic) 然后,从lstbufStatic获取commonEle列表中存在的
lstbufhichchange是lstbufStatic的子集。我想做的是,找到一种方法来比较这两个集合,如果lstbufWhichChange的元素顺序与lstbufStatic相同,即使它不包含所有元素,它也是一个子集。如何操作?使用内置函数的一种方法是: 首先获取列表中的公共元素
val commonEle = lstbufWhichChange.intersect(lstbufStatic)
然后,从lstbufStatic获取commonEle列表中存在的元素
列表应等于commonEle列表
在您提供的示例中,lstbufWhichChange在一后面,因此commonEle.equalslist将返回false。但如果交换这些元素,则返回true。使用内置函数的一种方法是: 首先获取列表中的公共元素
val commonEle = lstbufWhichChange.intersect(lstbufStatic)
然后,从lstbufStatic获取commonEle列表中存在的元素
列表应等于commonEle列表
在您提供的示例中,lstbufWhichChange在一后面,因此commonEle.equalslist将返回false。但如果交换这些元素,则返回true。我的解决方案如下:
val res = lstbufWhichChange.foldLeft(true, lstbufStatic)((s, e) => {
val l = s._2.dropWhile(_ != e)
(s._1 && l.nonEmpty, l)
})
println(res._1)
我的解决方案如下:
val res = lstbufWhichChange.foldLeft(true, lstbufStatic)((s, e) => {
val l = s._2.dropWhile(_ != e)
(s._1 && l.nonEmpty, l)
})
println(res._1)
听起来像是一个递归的解决方案。检查LSTBUFHICHCHANGE的第一个元素是否出现在lstBufStatic中如果出现,则递归并检查LSTBUFHICHCHANGE的尾部元素的顺序与lstBufStatic的其余元素的顺序相同您的LSTBUFHICHCHANGE不应包含零,因为它是一个子集。我说得对吗?@srgfed01,是的,你说得对。我纠正了它,thnx。听起来递归解决方案很有效。检查LSTBUFHICHCHANGE的第一个元素是否出现在lstBufStatic中如果出现,则递归并检查LSTBUFHICHCHANGE的尾部元素的顺序与lstBufStatic的其余元素的顺序相同您的LSTBUFHICHCHANGE不应包含零,因为它是一个子集。我说得对吗?@srgfed01,是的,你说得对。我纠正了它,thnx.thnx。这正是我所需要的。thnx也给其他人。thnx代表这个。这正是我所需要的。thnx也发送给其他人。thnx用于此备选方案。.headOption.nonEmpty与.nonEmpty.thnx用于此备选方案。.headOption.nonEmpty与.nonEmpty相同。