【问题标题】:Looping through a LinkedHashSet using indexes in Scala使用 Scala 中的索引遍历 LinkedHashSet
【发布时间】:2015-04-02 00:37:42
【问题描述】:

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

【问题讨论】:

    标签: scala indexof linkedhashset


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-12-28
        • 2016-03-04
        • 2016-01-27
        • 1970-01-01
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        相关资源
        最近更新 更多