0

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

4

2 回答 2

0

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

于 2015-04-02T15:34:51.000 回答
0

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

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

于 2015-04-02T01:15:13.467 回答