0

Seq から作成された LinkedHashSet があります。Seq の順序を維持する必要があるため、LinkedHashSet を使用しましたが、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

コレクションで zip メソッドを使用して、ペア (タプル) のコレクションを作成することを検討してください。これの詳細は、あなたの詳細に依存します。mySeq.zip(myLHS)またはを実行myLHS.zip(mySeq)すると、異なる構造が作成されます。あなたはおそらく欲しいと思いますmySeq.zip(myLHS)が、私は推測しています。また、コレクションが非常に大きい場合は、最初にビューを取得することをお勧めします。たとえばmySeq.view.zip(myLHS)、ペア コレクションも非厳密になるようにするためです。

この結合されたコレクションを取得したら、for-comprehension (または直接myZip.foreach) を使用してそれをトラバースできます。

于 2015-04-02T01:15:13.467 に答える
0

この状況では、LinkedHashSet は必要ありません。Seqから作ったので注文済みです。一意にするために LHS に変換する必要はありません。どうやら、Seq にはdistinct、シーケンスから重複を削除するメソッドがあります。そこから、インデックスを介してアイテムにアクセスできます。

于 2015-04-02T15:34:51.000 に答える