2011-07-19 5 views
2

次のTreeMap持って想像:私はとそれをループすることができます知っているはそのインデックスでのTreeMapのキーを選択

var dates = new TreeMap[Long, Tuple2[Int, Double]]() 

を:

dates.foreach { case (date, (id, rotation)) => 
    ...   
} 

しかし、私のコードでは、このループが行われます別のループの中にあるので、私は日付キーで自分自身を前進させたいと思っています。普通はcurrIndex : Intという変数で、条件に応じて増分します。しかし、それはこれが可能であるように見えない...任意のアイデアはどのようにそれをする

date = dates.keys(currIndex) 

は、私は1つのような何かを考えていましたか?

あなたはIndexedSeq事前に全体のキーを変換することができます:

val keysSeq = dates.keySet.toIndexedSeq 

// later, obtain an index 
val index: Int = /* ... */ 
// lookup the key 
val (valueInt, valueDouble) = dates(keysSeq(index)) 

前答え

あなたが試みることができる

+2

アウターループでも例を挙げられますか?あなたがループを使用しているという事実は、命令的なパラダイムを使って問題をまだ考えていることを示唆しています(これは、最近Javaから移行した人にとっては非常に一般的です)。ユースケース全体を提示できる場合は、代替案を提案する方がはるかに簡単です。 –

答えて

3

編集:あなたのコメントに対処しようとしてこのようなもの:

dates.iterator.zipWithIndex.foreach { 
    case ((key, (valueInt, valueDouble)), index) => 

} 

それはあなたのために働くでしょうか?私は、あなたが "条件に応じて[currIndexをインクリメントする]"というあなたの要求を適切に理解しているかどうかわかりません...

+0

ありがとうございますが、これは私が欲しいものではありません。私は、あるキーから始め、そこから行くことができる必要があります。あなたのソリューションでは、毎回やり直す必要があります... – seb

関連する問題