2017-08-13 140 views
5

我想在構造函數中初始化一個帶有大小的列表。但我的列表的大小爲0初始化ArrayList <ArrayList <Int>>在kotlin中的大小

val seqList = ArrayList<ArrayList<Int>>(N) // This has the Problem 
val queries = ArrayList<Query>(Q) // This works like a charm 

我都NQ設定爲非零輸入來自用戶可以說 N = 100Q = 100

在調試我的代碼,我發現,queries.size() = 100但是seqList.size() = 0

我的假設不正確,seqList也應該用N ArrayList<Int>對象初始化。

+2

你確定queries.size()不是零嗎?該構造函數設置容量,而不是大小。 –

+0

我是在錯誤的地方放置斷點,你是對的。構造函數沒有設置大小,但容量:) –

回答

5

你的假設是不正確的,恐怕。 從ArrayListdocumentation引用:

提供一個MutableList實現中, 它採用了可調整大小的數組作爲其後備存儲。

此實施不提供管理容量的方法,因爲 支持JS數組本身可調整大小。 沒有速度優勢預先分配在JavaScript中的數組大小,所以此實現 不包括任何容量和「增長增量」的概念。

構造特別:

ArrayList(capacity: Int = 0) 

創建一個空的ArrayList。

一種ArrayList被創建,從而提供100作爲參數將不會創建列表中的元素。

相關問題