我可以创建最大尺寸超过 999 个元素的 Vector 吗? (按索引获取元素大于999)

Can I create a Vector with max size more then 999 elements? (get elem by index more than 999)

我可以创建最大尺寸超过 999 个元素的 Vector 吗? 准确地说,我需要按索引获取超过999个元素的元素?

现在,当我尝试它时,我得到了

Exception in thread "main" java.lang.IndexOutOfBoundsException: 1000000 is out of bounds (min 0, max 999)

代码为:"pattern" 由 100000 个元素组成

def image(pattern: Vector[Char], patSize: Int): Vector[Int] = {

@scala.annotation.tailrec
def imageCalc(i: Int, caret: Int, image: Vector[Int]): Vector[Int] = {
  if (i < patSize) {
    if (pattern(i) != pattern(caret)) { //CODE FAILS HERE
      if (caret == 0) {
        imageCalc(i + 1, caret, image.appended(0)) 
      } else {
        imageCalc(i, image(caret - 1), image) 
      }
    } else {
      println(caret + 1)
      imageCalc(i + 1, caret + 1, image.appended(caret + 1)) 
    }
  } else {
    image.prepended(0)
  }
}
imageCalc(1, 0, Vector[Int]())
}

这段代码最可疑的地方是这一行:

imageCalc(i, image(caret - 1), image) 

在此代码中,image 向量中的值作为 caret 值传递给递归调用。然后使用 caret 参数索引 pattern 而不进行边界检查:

if (pattern(i) != pattern(caret)) { //CODE FAILS HERE

我怀疑第一行应该是

imageCalc(i, caret - 1, image)