使用Scala中的索引通过LinkedHashSet进行循环

时间:2015-04-02 00:37:42

标签: scala indexof linkedhashset

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

2 个答案:

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