這應該是微不足道的。Kotlin 有一個ArrayList帶有建構式“initialCapacity”的
如果我有這個測驗用例;
class ArrayListTest : TestCase() {
@Test
fun testArrayList() {
val test = ArrayList<Int>(12)
test[3]=5
}
}
我得到了例外
java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 0
在除錯中運行確認雖然創建了 ArrayList,但其大小為零。
該檔案說有控制能力,因為支持陣列是可調整大小的本身功能有限,但是這似乎并沒有發生。即使我使用索引 0,我也會得到越界例外。
我嘗試在偶然情況下運行更新。我正在運行 2021 年 10 月 1 日的 Android Studio Arctic Fox 2020.3.1 補丁 3。
有沒有其他人遇到并解決過這個問題?
編輯:嗯。test.add(5) 允許你追加,這對大多數情況來說都很好。我將這個問題擱置一旁,因為看起來原來的方法應該可行。
uj5u.com熱心網友回復:
接受initialCapacity引數的構造函式僅使用容量作為底層支持陣列的大小。請注意,該引數稱為“容量”,而不是“大小”。如果您提前知道串列可能不會增長超過特定大小,這將很有用,因為這樣它就不會使用比必要更大的后備陣列,并且如果它也開始了,它以后也不必調整陣列的大小小的。
與 Array 不同,ArrayList 沒有固定大小。它的大小取決于當前包含哪些元素。所以它總是從零開始,除非你將元素傳遞給它的建構式。
您創建了一個大小為零且支持陣列容量為 12的 ArrayList 。由于它的元素為零,因此您無法訪問索引大于其大小的元素。
您似乎想要創建一個具有特定大小的 ArrayList,全部填充為零。沒有函式或建構式可以準確地做到這一點,但您可以像這樣使用 MutableList 來做到這一點:
val test = MutableList(12) { 0 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339548.html
