我有一个从Seq创建的LinkedHashSet。我使用了LinkedHashSet,因为我需要保持Seq的顺序,但也要确保唯一性,就像Set一样。我需要针对另一个序列检查此LinkedHashSet,以验证其中的各种属性是否相同。我假设我可以循环使用索引i
,但它似乎没有。这是我想要完成的一个例子。
var s: Seq[Int] = { 1 to mySeq.size }
return s.forall { i =>
myLHS.indexOf(i).something == mySeq.indexOf(i).something &&
myLHS.indexOf(i).somethingelse == mySeq.indexOf(i).somethingelse
}
那么如何访问LHS的各个元素?
答案 0 :(得分:0)
考虑在集合上使用zip方法来创建对(元组)的集合。具体细节取决于您的具体情况。您可能希望执行mySeq.zip(myLHS)
或myLHS.zip(mySeq)
,这将创建不同的结构。你可能想要mySeq.zip(myLHS)
,但我猜。此外,如果集合非常大,您可能需要先查看视图,例如mySeq.view.zip(myLHS)
以便对集合也是非严格的。
一旦你有这个合并的集合,你可以使用for-comprehension(或直接,myZip.foreach
)来遍历它。
答案 1 :(得分:0)
在这种情况下不需要LinkedHashSet。因为我是从Seq制作的,所以它已经订购了。我不必将其转换为LHS以使其独特。显然,Seq有distinct
方法,它将删除序列中的重复项。从那里,我可以通过他们的索引访问这些项目。