2017-11-26 9 views
0

スカラーのリストの特定のインデックスに追加する最良の方法は何ですか?私は所定の位置に挿入するように期待していたリストの特定のインデックスに要素を追加する

case class Level(price: Double) 

case class Order(levels: Seq[Level] = Seq()) 

def process(order: Order) { 
    orderBook.levels.updated(0, Level(0.0)) 
} 

が新しいLevelをゼロそれだけjava.lang.IndexOutOfBoundsException: 0をスロー:

は、これは私がしようとしているものです。これを処理する最良の方法は何ですか?リスト内の索引を追跡するために使用されるべきであるSeq以外のより良いデータ型がありますか?

+0

https://stackoverflow.com/questions/31037384/scala-insert-a-new-element-in-a-specified-リストの位置 – jrook

答えて

2

リストにインデックスを記録するために使用するSeq以外のデータタイプはありますか?

scala> val vector = Vector(1,2,3) 
vector: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3) 

scala> vector.updated(0, 5) 
res3: scala.collection.immutable.Vector[Int] = Vector(5, 2, 3) 

注意VectorIndexOutOfBoundsExceptionを通じてあなたは、空のベクターにデータを挿入しようとしていること:あなたが基になるコレクションへのランダムアクセスが必要な場合

はい

Vector[T]が推奨されます。追加データを付加する良い方法は、それぞれ、 :+:+を使用している:

+0

ありがとう!新しく更新されたVectorを使用して、 'Order'に格納されている既存のものを上書きするにはどうすればよいですか? Vectorに挿入(更新しない)したいのですか? – maloney

+0

@maloney 'var vector'フィールドを使用して、それを更新し続けることができます。または、必要に応じて別の可変コレクションを選択することもできます。 Insertは ':+'と '+:'を使って示したとおりです。 –

関連する問題