我需要添加到阵列中两个字符串设定在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