在 Scala 中使用索引循环遍历 LinkedHashSet

Looping through a LinkedHashSet using indexes in Scala

我有一个从 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 的各个元素?

考虑对集合使用 zip 方法来创建成对集合(元组)。具体情况取决于您的具体情况。您可能想要执行 mySeq.zip(myLHS)myLHS.zip(mySeq),这将创建不同的结构。你可能想要 mySeq.zip(myLHS),但我猜。此外,如果集合非常大,您可能需要先查看,例如mySeq.view.zip(myLHS) 这样 pair 集合也是非严格的。

一旦你有了这个组合集合,你就可以使用for-comprehension(或者直接,myZip.foreach)来遍历它。

在这种情况下不需要 LinkedHashSet。因为我是用 Seq 制作的,所以它已经被订购了。我不必将它转换为 LHS 也可以使其独一无二。显然,Seq 具有 distinct 方法,该方法将从序列中删除重复项。从那里,我可以通过它们的索引访问这些项目。