在 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
方法,该方法将从序列中删除重复项。从那里,我可以通过它们的索引访问这些项目。
我有一个从 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
方法,该方法将从序列中删除重复项。从那里,我可以通过它们的索引访问这些项目。