我需要添加到陣列中兩個字符串設定在ArrayBuffer值,省略第一次出現:通過指數斯卡拉
val strings = ArrayBuffer[String]()
strings(1) = "abc1"
strings(2) = "abc2"
但是我卻越來越
Exception in thread "main" java.lang.IndexOutOfBoundsException: 1
如何解決這一問題?
我需要添加到陣列中兩個字符串設定在ArrayBuffer值,省略第一次出現:通過指數斯卡拉
val strings = ArrayBuffer[String]()
strings(1) = "abc1"
strings(2) = "abc2"
但是我卻越來越
Exception in thread "main" java.lang.IndexOutOfBoundsException: 1
如何解決這一問題?
你ArrayBuffer
是空的,所以你不能在索引i
元素設置爲新String
- 指數i
是不是一個有效的索引,如果ArrayBuffer
是空的。首先要確保的元素在ArrayBuffer
存在,加入他們:
val strings = ArrayBuffer[String]()
strings += "abc1"
strings += "abc2"
現在ArrayBuffer
有兩個要素,如果你願意,你可以對其進行修改。請注意,編號從0開始,而不是在1
strings(0) = "something else"
strings(1) = "hello world"
如果你想預填的ArrayBuffer
比如,你可以使用fill
,我向您展示在我回答你剛纔的問題。
// Fill with 10 empty strings (creates 10 elements in the ArrayBuffer)
val strings = ArrayBuffer.fill(10) { "" }
// Now you can set them (valid indices are 0...9)
strings(0) = "abc1"
strings(1) = "abc2"
或者,使用Map
代替ArrayBuffer
,在地圖的鍵數和值都是字符串。
import scala.collection.mutable.Map
val strings: Map[Int, String] = Map()
strings(1) = "abc1"
strings(2) = "abc2"
的可能的複製[初始化Scala中的數據結構](http://stackoverflow.com/questions/37919895/initialize-data-structure-in-scala) –
這是或多或少相同的問題[你以前的問題](http://stackoverflow.com/questions/37919895/initialize-data-structure-in-scala)。首先需要在「ArrayBuffer」中添加元素,然後才能修改特定索引處的元素。 – Jesper
但是我不能用'+ ='添加元素,因爲我需要用索引來設置它們 – ps0604